24
Oracle Automatic Storage Management (ASM) ------------------------------------- -- * An Oracle file system, built specifically for database related files. -- * Can be used for single or multiple instance architecture (RAC). -- (Eliminates the need for third party Clustered File System) -- * Enables storage solutions such as Striping & Mirroring (for performance & Survivability) -- * Stripes and Mirrors at file level (as opposed to volume level) -- - Files are striped more efficiently. -- - Mirroring can be enabled for specific files only, at different levels. -- * Each DB can have both ASM and regular files. (Can also migrate some files to ASM) -- * ASM can store all Oracle file types. (Not just Data Files). ASM Advantages ------------------------------------- -- 1. it is aware of the nature of Oracle database files. This means it can make -- more intelligent decisions about how to manage the files than a third- party product. -- 2. ASM can handle files individually, whereas all other LVMs work at the -- volume level: they are not aware of the files within the volume. So with a third-party -- LVM, you have to specify RAID attributes per volume. -- ASM can specify the attributes per file, so you can for instance have three-way -- mirroring for your SYSTEM tablespace datafiles but no mirroring at all for your -- temporary tablespaces’ tempfiles, all within the same logical volume. ASM Basic Concepts ------------------------------------- ----------------------- -- * Disk Group (DG) ----------------------- -- * A group of disks which are managed as a single logical unit: -- * If I need to add more space to a DG, I'll add another disk to it. -- * Although we may be constantly adding ASM Files and Disks to a growing system, the number of Disk Groups to manage remains constant. -- * ASM files are assigned to a Disk Group, instead of to a specific disk. -- * All data will be striped and mirrored between the disks of this DG. -- * DG >-< DB: -- * Each DG can contain files from multiple DBs. -- * Each DB can store his files on different DGs.

Oracle Automatic Storage Management

Embed Size (px)

DESCRIPTION

asm

Citation preview

Page 1: Oracle Automatic Storage Management

Oracle Automatic Storage Management (ASM)--------------------------------------- * An Oracle file system, built specifically for database related files.-- * Can be used for single or multiple instance architecture (RAC).--     (Eliminates the need for third party Clustered File System)-- * Enables storage solutions such as Striping & Mirroring (for performance & Survivability)-- * Stripes and Mirrors at file level (as opposed to volume level)--     - Files are striped more efficiently.--     - Mirroring can be enabled for specific files only, at different levels.-- * Each DB can have both ASM and regular files. (Can also migrate some files to ASM)-- * ASM can store all Oracle file types. (Not just Data Files).

ASM Advantages--------------------------------------- 1. it is aware of the nature of Oracle database files. This means it can make--    more intelligent decisions about how to manage the files than a third-party product.-- 2. ASM can handle files individually, whereas all other LVMs work at the--    volume level: they are not aware of the files within the volume. So with a third-party--    LVM, you have to specify RAID attributes per volume.--    ASM can specify the attributes per file, so you can for instance have three-way--    mirroring for your SYSTEM tablespace datafiles but no mirroring at all for your--    temporary tablespaces’ tempfiles, all within the same logical volume.

 ASM Basic Concepts------------------------------------- ------------------------- * Disk Group (DG)-------------------------   * A group of disks which are managed as a single logical unit:--     * If I need to add more space to a DG, I'll add another disk to it.--     * Although we may be constantly adding ASM Files and Disks to a growing system, the number of Disk Groups to manage remains constant.--   * ASM files are assigned to a Disk Group, instead of to a specific disk.--   * All data will be striped and mirrored between the disks of this DG.--   * DG >-< DB:--     * Each DG can contain files from multiple DBs.--     * Each DB can store his files on different DGs.--   * Each DG is self describing, and contains all information about his Disks and Files.

CREATE DISKGROUP DG3    '/devices/diskb3' NAME diskb3,    '/devices/diskb4' NAME diskb4

Allocation Unit (AU)-------------------------   *Each datafile is striped to Allocation Units (AU).--   * AUs are spread evenly across the disks of the Disk Group.--   * AUs are rebalanced automatically across the disks whenever disks are added or removed from the DG.--   * AU size:--     * 10g: 1MB--     * 11g: Determined at DG creation. (1MB, 2, 4, 8, 16, 32, 64MB)

Page 2: Oracle Automatic Storage Management

CREATE DISKGROUP DG3    '/devices/diskb3' NAME diskb3,    '/devices/diskb4' NAME diskb4ATTRIBUTE 'au_size'='4M';

ASM Instance-------------------------   * ASM metadata is managed by a single ASM instance, which can serve many DBs and Instances.--   * The instance mounts his DGs instead of a specific database.--   * Created and configured via the DBCA. ("Configure ASM")--   * The instances, however, work directly with the ASM files.

Creating a Disk Group-- (Performed in the ASM instance)---------------------------------- conn /@ASM AS SYSASM -- See current Disk Groups:SELECT GROUP_NUMBER, NAME, TOTAL_MBFROM v$asm_diskgroup; col path for a50-- See available disks:SELECT GROUP_NUMBER "DG#", PATHFROM v$asm_diskORDER BY path; -- Join:SELECT GROUP_NUMBER, dg.name, SUM(d.TOTAL_MB) AS "Size", COUNT(*) AS "Disks"FROM v$asm_diskgroup dg JOIN v$asm_disk dUSING (GROUP_NUMBER)GROUP BY GROUP_NUMBER, dg.name ;  -- Create a new disk group DG2:CREATE DISKGROUP DG2DISK'\\.\ORCLDISK_LABEL_G' NAME DG2_0,'\\.\ORCLDISK_LABEL_H' NAME DG2_1 ;  -- See available disks:SELECT GROUP_NUMBER "DG#", PATHFROM v$asm_diskORDER BY path; -- DROP DISKGROUP DG2;

Create a tablespace with ASM file-- (Performed in the DB instance)

Page 3: Oracle Automatic Storage Management

-------------------------------------conn sys/oracle@orcl as sysdba CREATE TABLESPACE ASM_TBS  DATAFILE '+DG2/asm_tbs01.dbf' SIZE 100M; SELECT name FROM v$datafile; -- DROP TABLESPACE asm_tbs INCLUDING CONTENTS AND DATAFILES;  -- * Stamp candidate disks / change name and creating disk groups can be done by using ASMCA--   $oracle_grid_home\BIN\asmca.bat-- * for stamping and name changing :--   SHUTDOWN ASM => stamp/change names => STARTUP ASM

ASM Templates------------------------------------- -- * A template is a collection of file attributes that are applied to the ASM files.--   It is associated with a Disk Group.-- * Whenever a file is created the file attributes specific to the template are applied to --   the files.-- * For eg., if we want to create a users tablespace that contains data file we use the--   DATAFILE template.-- * Default Template: When you create a disk group, Oracle creates system default template--   for the disk group.

Select * From V$ASM_TEMPLATE

ASM Striping--------------------------------------- * ASM stripes the file to AUs, and devides them between the DG disks.-- * Two types of striping:--      1. Coarse-based striping:--          - Each stripe size is one AU.--          - Classic striping. Suitable for most file types.--          - Used for load balancing.--      2. Fine-Grained striping--            - Each stripe size is 128KB. (Wider distribution of data)--            - Used for decreasing IO Latency (Waiting for IO).--            - Suitable for small IO operations such as Redo Log Files. ALTER DISKGROUP DG2      ATTRIBUTE 'template.tname.stripe' = 'COARSE',            'template.tname.redundancy' = 'MIRROR'; ALTER DISKGROUP dg2 MODIFY TEMPLATE ONLINELOGATTRIBUTES (FINE); ALTER DISKGROUP dg2 MODIFY TEMPLATE DATAFILEATTRIBUTES (COARSE); 

Page 4: Oracle Automatic Storage Management

Select * From V$ASM_TEMPLATEWHERE name = ('DATAFILE', 'ONLINELOG')AND group_number = 2

Disk Group Dynamic Rebalancing--------------------------------------- * ASM performs automatic rebalancing online whenever we add / remove disks from a DG.-- * ASM_POWER_LIMIT:--   - Controls IO overhead during rebalancing.--   - Values are between 1 and 11. (Minimum overhead (1) .. Minumum time (11))--   - The higher the limit, the faster rebalancing will complete.--   - Lower values will take longer, but consume fewer processing and I/O resources.

show parameter ASM_POWER_LIMIT

ASM Mirroring & Failure Groups--------------------------------------- * ASM can protect our files from media failures (disk / disk-controller crash)---- * Mirroring:--   - Applied at Extent (AU) level (Not at file or disk level).--   - When an AU is allocated to a file on a specific disk,--       a mirrored AU is also allocated on another disk in the SAME Disk Group.--   - Therefore, if a disk is lost, we can restore its contents--      from other disks on its Disk Group. -- * Failure Group:--   - A failure group is a subset of the disks in a disk group,--     which could fail at the same time because they share hardware.--     (For example, disks that share the same disk controller)--   - By default, each ASM disk belongs to his own Failure Group (FG).--   - However, we can group a few disks in a DG to a single Failure Group.--   - When an AU is allocated on a FG disk, a mirrored AU is also allocated--      on ANOTHER Failure Group in the SAME Disk Group.--   - Therefore, if a Failure Group is lost, we can restore its contents--      from other disks on its Disk Group. -- *   types or mirroring:--     1. External Redundancy - No mirroring or FGs. (When using an external tool for --        protection).--     2. Normal Redundancy   - Two-way mirroring.   (Two copies)--     3. High Redundancy     - Triple-mirroring.    (Three copies)

DROP DISKGROUP DG2 INCLUDING CONTENTS; -- A protected disk group:CREATE DISKGROUP DG2  NORMAL REDUNDANCY   DISK     '//./ORCLDISKDATA3' NAME DG2_0,     '//./ORCLDISKDATA4' NAME DG2_1,     '//./ORCLDISKDATA5' NAME DG2_2,

Page 5: Oracle Automatic Storage Management

     '//./ORCLDISKDATA6'; col name for a10col failgroup for a11col path for a20col redundancy for a10 SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB, TOTAL_MB, FREE_MBFROM v$asm_disk; DROP DISKGROUP DG2 INCLUDING CONTENTS; -- A Disk Group with 2 Failure Groups (one for each controller):CREATE DISKGROUP DG2  NORMAL REDUNDANCY   FAILGROUP controller1 DISK     '//./ORCLDISKDATA3' NAME DG2_0,     '//./ORCLDISKDATA4' NAME DG2_1  FAILGROUP controller2 DISK     '//./ORCLDISKDATA5' NAME DG2_2,     '//./ORCLDISKDATA6' NAME DG2_3;  col name for a10col failgroup for a11col path for a20col redundancy for a10 SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB, TOTAL_MB, FREE_MBFROM v$asm_disk;

ASM Instance Management------------------------------------- --------------------------------------- ASM initialization parameters--------------------------------------- * Important ASM related Parameters:--    - INSTANCE_TYPE  : should be set to ASM. This is the only parameter that MUST be --      defined.--    - ASM_DISKGROUPS : List of disk groups to be mounted at startup.--                        (Or during ALTER DISKGROUP ALL MOUNT)--    - ASM_POWER_LIMIT: The speed for a rebalance operation (1-11. default is 1).-- * Additional parameters can be set... --------------------------------------- ASM Shutdown / Startup------------------------------------- --------------- STARTUP--------------- * The options for the STARTUP command are:

Page 6: Oracle Automatic Storage Management

--   - NOMOUNT - Starts the ASM instance without mounting any disk groups.--   - MOUNT   - Starts the ASM instance and mounts the disk groups specified--               by the ASM_DISKGROUPS parameter.--   - FORCE   - Performs a SHUTDOWN ABORT before restarting the ASM instance.--   - OPEN    - Not a valid option.--   - RESTRICT- DB instances cannot use the DGs. (Used for maintenance) -- * If the ASM_DISKGROUPS parameter is empty, no DGs are mounted.--    (Can be mounted manually using ALTER DISKGROUP...MOUNT) --------------- SHUTDOWN--------------- * ASM instance shutdown is possible only after shutting down all instances connected to it--     (Otherwise: ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS instance) -- * The options for the SHUTDOWN command are:--   - NORMAL    - Waits for all connections to finish (DB instances & SQL sessions)--   - TRANSACTIONAL - Waits for any active transactions to complete. (Doesn't wait for sessions)--   - IMMEDIATE - Same as TRANSACTIONAL.--   - ABORT     - The ASM instance shuts down instantly (Crash). -- * Shutdown ABORT will require crash recovery upon next startup:--   - All connected instances will also shutdown.--       (ORA-15064: communication failure with ASM instance)--   - Each DG has log files for recovery of ASM metadata.--   - Actual data is recovered using the DB Redo Logs. -------------------------------- ASM Instance Architecture------------------------------------------------- MEMORY------------------- * SGA:--    - Shared Pool: Used for metadata information--    - Large Pool : Used for parallel operations--    - ASM Cache  : Used for data blocks during rebalance operations--    - Free Memory: Unallocated memory available-- * Minimum recommended size is 256 MB. (Depends on the used disk space size)-- * AMM (Automatic memory management) is enabled by default. -------------------------------- Background Processes------------------------------------------------------- In the ASM instance------------------------- * The ASM instance contains some special ASM background processes:--    - RBAL - Manages the Rebalancing process across the DG.--    - ARBn - Perform the actual relocation of the AU during rebalancing.--    - GMON - (Group Monitor) - Disk-level activities (Offline, Drop etc).--    - MARK - Marks ASM allocation units as stale when needed

Page 7: Oracle Automatic Storage Management

--    - Onnn - pool of connections to the ASM instance for exchanging messages ------------------------- In the DB instance------------------------- * In addition, each regular instance that uses ASM has some special background processes:--    - ASMB - Connects to the ASM instance at startup, and works with it (Data file management).

Common ASM V$ Views---------------------------------------------- V$ASM_FILE - Files of disk groups mounted by the ASM instance. SELECT file_number, name, ROUND(bytes/1024/1024) SIZE_MBFROM v$asm_alias JOIN v$asm_fileUSING (file_number)ORDER BY file_number, name;  -- V$ASM_CLIENT - DB instances using the ASM instance.--   (In the DB - ASM instance data if the database has open ASM files)  -- V$ASM_DISK   - List of discovered Disks. (even if not part of any disk group).--   (In the DB - Disks of DGs used by the database instance).col name for a10col failgroup for a11col path for a20col redundancy for a10SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATHFROM v$asm_diskORDER BY path; -- V$ASM_DISKGROUP - List of discovered disk groups.--   (In the DB - DGs mounted by the local ASM instance) -- V$ASM_OPERATION - Files with executing long running operations. -- V$ASM_TEMPLATE - Templates of DGs mounted by the ASM instance. -- V$ASM_ALIAS  - Aliases that belong to mounted disk groups.--              - Files with aliases will have 2 rows. (Original & alias) SELECT file_number, name, CASE ALIAS_DIRECTORY WHEN 'Y' THEN 'Directory' ELSE 'File' END TypeFROM v$asm_aliasORDER BY type, file_number;

SYSASM--------------------------------------- * Meant for ASM management. (Separate from SYSDBA for security)-- * As ASM has no Data Dictionary, users are authenticated via OS or password-file.

Page 8: Oracle Automatic Storage Management

 -- * SYSOPER, enables basic administration, but not CREATE/ALTER/DROP DGs.--     (Startup/Shutdown, Mount/Dismount, Rebalance, Online/Offline disk, v$ASM_*)-- * SYSDBA enables all SYSASM privs, but will be limited in the future. -- * Via OEM (Only if connected via SYSASM):--    ASM => Users => Create/Edit/Delete-- (Connecting as SYSASM: Preferences => Preferred Credentials => ASM:Set Credentials => Specify...

-- In CMD:SET ORACLE_SID=+ASMsqlplus /nologconn / as sysasm SELECT GROUP_NUMBER, NAME, TOTAL_MBFROM v$asm_diskgroup; -- Or:CREATE USER asm_mgr IDENTIFIED BY asm_mgr;GRANT SYSASM TO asm_mgr;SELECT * FROM v$pwfile_users;conn asm_mgr/asm_mgr AS SYSASM

Interaction Between Database Instances and ASM------------------------------------- -- * The Database Instance and ASM Instance work together in a coordinated fashion.-- A Database instance must interact with ASM to map database files to ASM extents.-- * A Database instance also receives a constant stream of messages relating to ASM operations-- (such as disk group rebalancing) that may lock or move ASM extents.-- * Database I/O is not channeled through the ASM instance. In fact, the database conducts I/O-- operations directly against ASM files.

Disk Group Maintenance - SYNTAX...--------------------------------------- * Should be performed from the ASM instance by a user with a SYSASM privilege.

set oracle_sid=+ASMsqlplus / as sysasm col name for a10col path for a30 SELECT GROUP_NUMBER, NAME, STATE, TYPE, TOTAL_MBFROM V$ASM_DISKGROUPORDER BY 1; SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB, TOTAL_MB, FREE_MB

Page 9: Oracle Automatic Storage Management

FROM v$asm_disk;

CREATE DG------------------------- * We can optionally name and size each disk.--    (Otherwise a system generated name is given, and ASM determines its size automatically)-- * FORCE - Move the disk from another DG to this one. CREATE DISKGROUP DG2  NORMAL REDUNDANCY  DISK   '//./ORCLDISKDATA3' NAME DG2_0,   '//./ORCLDISKDATA4' NAME DG2_1,   '//./ORCLDISKDATA5' NAME DG2_2,   '//./ORCLDISKDATA6' NAME DG2_3;

DROP DG------------------------- * INCLUDING CONTENTS - Must be specified if it contains files.-- * The DG must be mounted, and its files inactive.-- * The header of each disk is formatted, so it will be available--     to other DGs or to the OS. DROP DISKGROUP DG2 INCLUDING CONTENTS;

Adding disks to a DG------------------------------- * Disks are added and Rebalaced online while data is fully accessible.-- * The rebalancing load is determined according to ASM_POWER_LIMIT. SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB, TOTAL_MB, FREE_MBFROM v$asm_diskWHERE group_number=0ORDER BY path; -- Add two disks to a "DG1":ALTER DISKGROUP DG1 ADD DISK   '//./ORCLDISKDATA3' NAME DG1_3,   '//./ORCLDISKDATA4' NAME DG2_4;  -- Special discovery characters can be used to add a group of disks.ALTER DISKGROUP DG1 ADD DISK '//./ORCLDISKDATA*';

ASM DG Compatability-------------------------------- * Determines which Oracle version can run the ASM or work with him.-- * Determined at Disk Group level.-- * Two types:

Page 10: Oracle Automatic Storage Management

--    1. RDBMS Compatibility (Compatible.RDBMS)--       - Refers to the regular instances which work with the ASM.--       - The compatability version of the instance must be equal or higher.--       - Determines the format of the massages between the ASM and the regular instance.--       - ASM can operate with instances of different compatability versions.--    2. ASM Compatability (Compatible.ASM)--       - The compatability version of the ASM instance (ASM Metadata).--       - Must be greater or equal to the RDBMS comp. of the FG. -------------------------------- ASM DG Attributes-------------------------------- * We can specify DG attributes when creating and altering the DG in the ATTRIBUTE clause.--   - AU_SIZE (C)           - Allocation Unit size (1MB ,2, 4, 8, 16, 32, 64MB)--   - COMPATIBLE.RDBMS (AC) - Minimal Oracle version for the regular instances using the DG.--   - COMPATIBLE.ASM   (AC) - Minimal Oracle version for the ASM instance mounting the DG.--   - DISK_REPAIR_TIME (AC) - Length of time before removing a disk once OFFLINE--   - TEMPLATE.t-name.REDUNDANCY (A) - Redundancy level of a specifid template.--                                      (UNPROTECTED / MIRROR / HIGH)--   - TEMPLATE.t-name.STRIPE (A) - Striping attribute of specified template. (COARSE / FINE)

ALTER DISKGROUP DG2ATTRIBUTE 'compatible.asm'='11.1'; -- * We can view all attributes of the DGs in the V$ASM_ATTRIBUTE view.-- * Via the OEM: Create/Edit DG => Advanced Attributescol name for a15col value for a10SELECT group_number DG#, name, valueFROM v$asm_attribute;

ASM Fast Mirror Resync---------------------------------- * Reduces the time required to resynchronize failed disk data.-- * When a disk goes offline due to a failure, his mirrored extents are still available.-- * ASM tracks the extents that were modified during the outage using a bitmap--   (Bit for each extent), and resynchronizes only these extents when the disk is back online.---- * When a disk becomes unavailable due to a failure, ASM places him OFFLINE automatically.-- * DISK_REPAIR_TIME - Determines the length of time before removing a disk once OFFLINE.--      (Length of outage which still enables auto-recovery of the disk).-- * To manually place a DG or FG Offline/Online via the OEM (For maintenance):--     - ASM Management => Click the DG usage pie-chart => View by disk/FG => Offline--     - We can override the default value of DISK_REPAIR_TIME here.

Bad block repair (11g)---------------------------------------------- * Performed automatically when in Normal/High Redundancy.

Page 11: Oracle Automatic Storage Management

-- * When a block access fails, ASM recovers it automatically from its mirror.-- * If recovery to the original location fails, its recovered to an alternative location.-- * Can perform manually from ASMCMD using repair/remap.

Miscellaneous ALTER Commands---------------------------------------------- Remove a disk from a DG:ALTER DISKGROUP dgroupA DROP DISK A5; -- Removing and adding disks in a single statement (Efficient for rebalancing):ALTER DISKGROUP dgroupA DROP DISK A6 ADD FAILGROUP fred         DISK '/dev/rdsk/c0t8d0s2' NAME A9; -- Cancel a disk drop operation (Only if the drop operationis not yet completed)ALTER DISKGROUP dgroupA UNDROP DISKS; -- Manually rebalance a DG:--   - Useful to change the default Power level.--       (Also for a rebalace that is already active in the background)--   - Setting the Power level to 0, stop the rebalancing.ALTER DISKGROUP dgroupB REBALANCE POWER 5; -- Mount/Dismount a DG:--   - Makes it unavailable to the DB.ALTER DISKGROUP DG1 DISMOUNT;ALTER DISKGROUP DG1 MOUNT;ALTER DISKGROUP ALL DISMOUNT;ASMCMD---------------------------------------------- * Manage ASM from the command prompt.-- * Works with ASM Files, Directories & Aliases.-- * Like other file systems, ASM also has directories which contain the ASM Files.-- * Each file has a "Fully Qualified File Name", which is the path to it:--     - The + sign represents the Root directory of the Disk Group:ASMCMD> ls -l +DGROUP1/ORCL/DATAFILE -- * mkdir - Add new directories:ASMCMD> mkdir +dgroup1/sample/mydir -- * md_backup / md_restore - backup and restore ASM Metadata:--    - This enables us to recreate a DG with the same directories and templates (attributes):ASMCMD> md_backup –b /tmp/dgbackup070222 –g admdsk1 –g asmdsk2ASMCMD> md_restore –t full –g asmdsk1 –i backup_file -- * lsdsk - Displays ASM disk information.--     - When connected - uses V$/GV$ tables.--     - When not-connected - scans the disk headers to get the information.--         (can use a disk string to limit the discovery set)

Page 12: Oracle Automatic Storage Management

ASM Scalability and Performance-------------------------------------------- ---------------------------------------------- ASM Directories---------------------------------------------- * A directory heirarchy can be defined using the ALTER DISKGROUP statement--     to support ASM file aliasing: -- Create a directoryALTER DISKGROUP DG1 ADD DIRECTORY '+DG1/my_dir';ALTER DISKGROUP DG1 ADD DIRECTORY '+DG1/emps'; -- Rename a directory.ALTER DISKGROUP DG1 RENAME DIRECTORY '+DG1/emps' TO '+DG1/employees'; -- Delete a directory and all its contents.ALTER DISKGROUP DG1 DROP DIRECTORY '+DG1/employees';

Aliases-------------------------------------------- -- * Aliases allow you to reference ASM files using user-friendly names,--     rather than the fully qualified ASM filenames.-- *SELECT name FROM v$datafile; -- Create an alias using the fully qualified filename.ALTER DISKGROUP DG1 ADD ALIAS '+DG1/my_dir/my_file.dbf'  FOR '+DG1/mydb/datafile/asm_tbs.256.718138495'; -- Create an alias using the numeric form filename.ALTER DISKGROUP DG1 ADD ALIAS '+DG1/my_dir/my_file.dbf'  FOR '+DG1.256.718138495'; -- Rename an alias.ALTER DISKGROUP DG1 RENAME ALIAS '+DG1/my_dir/my_file.dbf'  TO '+DG1/my_dir/my_file2.dbf';  -- Delete an alias.ALTER DISKGROUP DG1 DROP ALIAS '+DG1/my_dir/my_file2.dbf'; Attempting to drop a system alias results in an error

Create an ASM-based tablespace--------------------------------------------

 conn /@orcl as sysdbaCREATE TABLESPACE ASM_TBS DATAFILE '+DG1/asm_tbs01.dbf' size 10m;ALTER TABLESPACE ASM_TBS ADD DATAFILE '+DG1' size 10m; SELECT name FROM v$datafile;

Page 13: Oracle Automatic Storage Management

ASM Intallation Guidelines-------------------------------------------- -- 1. Using Third-Party tools such as EASEUS Partition Master 8.0.1 Home Edition--    Create Unallocated space on your hard drive-- 2. Create free space out of the anallocated space-- 3. Create at least 2 raw devices (without any file-system)-- 4. download Oracle Grid Infrastructure from oracle.com-- 5. Install Oracle Grid Infrastructure must be installed before Oracle Database--    NOTE : Oracle Grid Infrastructure must be installed before Oracle Database-- 6. Install Oracle Database  -- * Networking (tnsnames / listener / sqlnet) should be configured in grid_home-- TNSNAMES.ORA Should look something like this:/*ORCL =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = OWNER-3WSG9BKMD)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = orcl)    )  ) ASM =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = OWNER-3WSG9BKMD)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = +ASM)    )  )*/ -- Listener should look something like this :/* SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = +ASM)      (ORACLE_HOME = C:\app\Administrator\product\11.2.0\grid)    )   ) LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =

Page 14: Oracle Automatic Storage Management

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))      (ADDRESS = (PROTOCOL = TCP)(HOST = OWNER-3WSG9BKMD)(PORT = 1521))    )  ) */

DEMO!------------------------------------------------ SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 21 08:04:08 2012 Copyright (c) 1982, 2010, Oracle.  All rights reserved. @> conn /@ASM AS SYSASMConnected.SYS@ASM>SYS@ASM> -- See current Disk Groups:SYS@ASM> SELECT GROUP_NUMBER, NAME, TOTAL_MB  2  FROM v$asm_diskgroup; GROUP_NUMBER NAME                             TOTAL_MB------------ ------------------------------ ----------           1 DG1                                  9998 SYS@ASM> col path for a50SYS@ASM> -- See available disks:SYS@ASM> SELECT GROUP_NUMBER "DG#", PATH  2  FROM v$asm_disk  3  ORDER BY path;        DG# PATH---------- --------------------------------------------------         1 \\.\ORCLDISK_LABEL_E         1 \\.\ORCLDISK_LABEL_F         0 \\.\ORCLDISK_LABEL_G         0 \\.\ORCLDISK_LABEL_H SYS@ASM>SYS@ASM> -- DG#=0 means that specific path does not have any Disk GroupSYS@ASM>SYS@ASM> -- Join:SYS@ASM> SELECT GROUP_NUMBER, dg.name, SUM(d.TOTAL_MB) AS "Size", COUNT(*) AS "Disks"  2  FROM v$asm_diskgroup dg JOIN v$asm_disk d  3  USING (GROUP_NUMBER)  4  GROUP BY GROUP_NUMBER, dg.name ; GROUP_NUMBER NAME                                 Size      Disks------------ ------------------------------ ---------- ----------           1 DG1                                  9998          2 SYS@ASM>SYS@ASM> -- Create a new disk group DG2:SYS@ASM> CREATE DISKGROUP DG2

Page 15: Oracle Automatic Storage Management

  2  DISK  3  '\\.\ORCLDISK_LABEL_G' NAME DG2_0,  4  '\\.\ORCLDISK_LABEL_H' NAME DG2_1 ; Diskgroup created. SYS@ASM> -- See available disks:SYS@ASM> SELECT GROUP_NUMBER "DG#", PATH  2  FROM v$asm_disk  3  ORDER BY path;        DG# PATH---------- --------------------------------------------------         1 \\.\ORCLDISK_LABEL_E         1 \\.\ORCLDISK_LABEL_F         2 \\.\ORCLDISK_LABEL_G         2 \\.\ORCLDISK_LABEL_H SYS@ASM>SYS@ASM> -- DROP DISKGROUP DG2;SYS@ASM>SYS@ASM> -------------------------------------SYS@ASM> -- Create a tablespace with ASM fileSYS@ASM> -- (Performed in the DB instance)SYS@ASM> -------------------------------------SYS@ASM>SYS@ASM> conn sys/oracle@orcl as sysdbaConnected.SYS@orcl>SYS@orcl> CREATE TABLESPACE ASM_TBS  2    DATAFILE '+DG2/asm_tbs01.dbf' SIZE 100M; Tablespace created. SYS@orcl> SELECT name FROM v$datafile; NAME--------------------------------------------------------------------------------C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBFC:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBFC:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBFC:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBFC:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF+DG2/asm_tbs01.dbf 6 rows selected. SYS@orcl>SYS@orcl> --   DROP TABLESPACE asm_tbs INCLUDING CONTENTS AND DATAFILES;SYS@orcl>SYS@orcl>SYS@orcl> -- * Stamp candidate disks / change name and creating disk groups can be done by using ASMCASYS@orcl> --   $oracle_grid_home\BIN\asmca.batSYS@orcl> -- * for stamping and name changing :

Page 16: Oracle Automatic Storage Management

SYS@orcl> --   SHUTDOWN DB => SHUTDOWN ASM => stamp/change names => STARTUP ASM => STARTUP DBSYS@orcl> -- * SHUTDOWN ASM => stamp/change names => STARTUP ASMSYS@orcl> SYS@orcl> -------------------------SYS@orcl> -- ASM TemplatesSYS@orcl> -------------------------SYS@orcl>SYS@orcl> -- * A template is a collection of file attributes that are applied to the ASM files.SYS@orcl> --   It is associated with a Disk Group.SYS@orcl> -- * Whenever a file is created the file attributes specific to the template are applied toSYS@orcl> --   the files.SYS@orcl> -- * For eg., if we want to create a users tablespace that contains data file we use theSYS@orcl> --   DATAFILESYS@orcl> --   template.SYS@orcl> -- * Default Template: When you create a disk group, Oracle creates system default templateSYS@orcl> --   for the disk group.SYS@orcl> SYS@orcl> SELECT GROUP_NUMBER , NAME , STRIPE, REDUNDANCY  2  FROM V$ASM_TEMPLATE ; GROUP_NUMBER NAME                           STRIPE REDUND------------ ------------------------------ ------ ------           1 PARAMETERFILE                  COARSE MIRROR           1 ASMPARAMETERFILE               COARSE MIRROR           1 ASMPARAMETERBAKFILE            COARSE MIRROR           1 DUMPSET                        COARSE MIRROR           1 CONTROLFILE                    FINE   HIGH           1 FLASHFILE                      COARSE MIRROR           1 ARCHIVELOG                     COARSE MIRROR           1 ONLINELOG                      COARSE MIRROR           1 DATAFILE                       COARSE MIRROR           1 TEMPFILE                       COARSE MIRROR           1 BACKUPSET                      COARSE MIRROR GROUP_NUMBER NAME                           STRIPE REDUND------------ ------------------------------ ------ ------           1 AUTOBACKUP                     COARSE MIRROR           1 XTRANSPORT                     COARSE MIRROR           1 CHANGETRACKING                 COARSE MIRROR           1 FLASHBACK                      COARSE MIRROR           1 DATAGUARDCONFIG                COARSE MIRROR           1 OCRFILE                        COARSE MIRROR           1 OCRBACKUP                      COARSE MIRROR           1 ASM_STALE                      COARSE HIGH           2 PARAMETERFILE                  COARSE MIRROR           2 ASMPARAMETERFILE               COARSE MIRROR           2 ASMPARAMETERBAKFILE            COARSE MIRROR GROUP_NUMBER NAME                           STRIPE REDUND

Page 17: Oracle Automatic Storage Management

------------ ------------------------------ ------ ------           2 DUMPSET                        COARSE MIRROR           2 CONTROLFILE                    FINE   HIGH           2 FLASHFILE                      COARSE MIRROR           2 ARCHIVELOG                     COARSE MIRROR           2 ONLINELOG                      COARSE MIRROR           2 DATAFILE                       COARSE MIRROR           2 TEMPFILE                       COARSE MIRROR           2 BACKUPSET                      COARSE MIRROR           2 AUTOBACKUP                     COARSE MIRROR           2 XTRANSPORT                     COARSE MIRROR           2 CHANGETRACKING                 COARSE MIRROR GROUP_NUMBER NAME                           STRIPE REDUND------------ ------------------------------ ------ ------           2 FLASHBACK                      COARSE MIRROR           2 DATAGUARDCONFIG                COARSE MIRROR           2 OCRFILE                        COARSE MIRROR           2 OCRBACKUP                      COARSE MIRROR           2 ASM_STALE                      COARSE HIGH 38 rows selected. SYS@orcl> SYS@orcl> ------------------------SYS@orcl> -- ASM StripingSYS@orcl> ------------------------SYS@orcl>SYS@orcl> -- * ASM stripes the file to AUs, and devides them between the DG disks.SYS@orcl> -- * Two types of striping:SYS@orcl> --      1. Coarse-based striping:SYS@orcl> --          - Each stripe size is one AU.SYS@orcl> --          - Classic striping. Suitable for most file types.SYS@orcl> --          - Used for load balancing.SYS@orcl> --      2. Fine-Grained stripingSYS@orcl> --            - Each stripe size is 128KB. (Wider distribution of data)SYS@orcl> --            - Used for decreasing IO Latency (Waiting for IO).SYS@orcl> --            - Suitable for small IO operations such as Redo Log Files.SYS@orcl>SYS@orcl> -- ONLINELOGSYS@orcl> ALTER DISKGROUP dg2 MODIFY TEMPLATE ONLINELOG  2  ATTRIBUTES (FINE); Diskgroup altered. SYS@orcl> ALTER DISKGROUP dg2 MODIFY TEMPLATE DATAFILE  2  ATTRIBUTES (COARSE); Diskgroup altered.   1  Select * From V$ASM_TEMPLATE  2  WHERE name IN ('DATAFILE', 'ONLINELOG')

Page 18: Oracle Automatic Storage Management

  3* AND group_number = 2SYS@orcl> / GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE S NAME                           PRIM MIRR------------ ------------ ------ ------ - ------------------------------ ---- ----           2            7 MIRROR FINE   Y ONLINELOG                      COLD COLD           2            8 MIRROR COARSE Y DATAFILE                       COLD COLD SYS@orcl> SELECT GROUP_NUMBER , NAME , STRIPE, REDUNDANCY  2  FROM V$ASM_TEMPLATE  3  WHERE name IN ('DATAFILE', 'ONLINELOG')  4  AND group_number = 2 ; GROUP_NUMBER NAME                           STRIPE REDUND------------ ------------------------------ ------ ------           2 ONLINELOG                      FINE   MIRROR           2 DATAFILE                       COARSE MIRROR SYS@orcl>SYS@orcl> CONN /@ASM AS SYSASMSYS@ASM> DROP DISKGROUP DG2 INCLUDING CONTENTS;

ASM Mirroring & Failure Groups----------------------------------------------------------------------------------------------- * ASM can protect our files from media failures (disk / disk-controller crash)---- * Mirroring:--   - Applied at Extent (AU) level (Not at file or disk level).--   - When an AU is allocated to a file on a specific disk, a mirrored AU is also allocated on another disk in the SAME Disk Group.--   - Therefore, if a disk is lost, we can restore its contents from other disks on its Disk Group. -- * Failure Group:--   - A failure group is a subset of the disks in a disk group, which could fail at the same time because they share hardware. (For example, disks that share the same disk controller)--   - By default, each ASM disk belongs to his own Failure Group (FG).--   - However, we can group a few disks in a DG to a single Failure Group.--   - When an AU is allocated on a FG disk, a mirrored AU is also allocated on ANOTHER Failure Group in the SAME Disk Group.--   - Therefore, if a Failure Group is lost, we can restore its contents from other disks on its Disk Group. -- *   types or mirroring:--     1. External Redundancy - No mirroring or FGs. (When using an external tool for protection).--     2. Normal Redundancy   - Two-way mirroring.   (Two copies)--     3. High Redundancy     - Triple-mirroring.    (Three copies)

Page 19: Oracle Automatic Storage Management

 SYS@ASM> col path for a50SYS@ASM> -- See available disks:SYS@ASM> SELECT GROUP_NUMBER "DG#", PATH  2  FROM v$asm_disk  3  ORDER BY path;        DG# PATH---------- --------------------------------------------------         1 \\.\ORCLDISK_LABEL_E         1 \\.\ORCLDISK_LABEL_F         0 \\.\ORCLDISK_LABEL_G         0 \\.\ORCLDISK_LABEL_H -- A protected disk group: SYS@ASM>   CREATE DISKGROUP DG2  1        NORMAL REDUNDANCY  2        DISK  3        '\\.\ORCLDISK_LABEL_G',  4        '\\.\ORCLDISK_LABEL_H' ; Diskgroup created. SYS@ASM> SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP  2  FROM v$asm_disk;        DG#       DSK# NAME       FAILGROUP---------- ---------- ---------- -----------         2          0 DG2_0000   DG2_0000         2          1 DG2_0001   DG2_0001         1          0 DG1_0000   DG1_0000         1          1 DG1_0001   DG1_0001  SYS@ASM> DROP DISKGROUP DG2 INCLUDING CONTENTS; Diskgroup dropped.  SYS@ASM> CREATE DISKGROUP DG2  2    NORMAL REDUNDANCY  3    FAILGROUP controller1 DISK  4   '\\.\ORCLDISK_LABEL_G'  5    FAILGROUP controller2 DISK  6    '\\.\ORCLDISK_LABEL_H' ; Diskgroup created. SYS@ASM> SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP  2  FROM v$asm_disk;        DG#       DSK# NAME       FAILGROUP---------- ---------- ---------- -----------         2          0 DG2_0000   CONTROLLER1         2          1 DG2_0001   CONTROLLER2

Page 20: Oracle Automatic Storage Management

         1          0 DG1_0000   DG1_0000         1          1 DG1_0001   DG1_0001