Sachin's DBA Blog - Automatic Storage Management (ASM)
Sachin's DBA Blog - Automatic Storage Management (ASM)
Sachin's DBA Blog - Automatic Storage Management (ASM)
All above tasks, striping, mirroring, logical file system building, are done to serve Oracle database. Oracle database offers some techniques of its own to simplify or enhance the process. Lets DBAs execute many of the above tasks completely within the Oracle framework. Using ASM you can transform a bunch of disks to a highly scalable and performance file system/volume manager using nothing more than what comes with Oracle database software at no extra cost and you don't need to be an expert in disk, volume managers, or file system management. You can store the following file types in ASM diskgroups: Datafiles Control files Online redo logs Archive logs Flashback logs SPFILEs RMAN backups
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 1/14
11/22/13
Temporary datafiles Datafile copies Disaster recovery configurations Change tracking bitmaps Datapump dumpsets
At home work
Web Designers
Bathroom Mirror
In summary, ASM provides the following functionality/features: Manages groups of disks, called diskgroups. Must be careful while choosing disks for a diskgroup. Manages disk redundancy within a diskgroup. Provides near-optimal I/O balancing without any manual tuning. Enables management of database objects without specifying mount points and filenames. Supports large files. Replacement for CFS (Cluster File System). Also useful for Non-RAC databases. A new instance type - ASM is introduced in 10g. ASM instance has no data dictionary. A Disk can be a partial, full or a LUN from the RG. I/O is spread evenly across all disks of a diskgroup. Disks can be dynamically added to any diskgroup. When combined with OMF increases manageability. ASM cannot maintain empty directories delete input has issues, create a dummy directory. Use of ASM diskgroup is very simple create tablespace. Enterprise Manager can also be used for administering diskgroups Only RMAN can be used with ASM. Introduces three additional Oracle background processes RBAL, ARBx and ASMB. ASMB - This ASMB process is used to provide information to and from cluster synchronization services used by ASM to manage the disk resources. It's also used to update statistics and provide a heart beat mechanism. Re-Balance, RBAL - RBAL is the ASM related process that performs rebalancing of disk resources controlled by ASM. Actual Rebalance, ARBx - ARBx is configured by ASM_POWER_LIMIT. ASM instance has it own set of v$views and init.ora parameters. The advantages of ASM are Disk Addition - Adding a disk is very easy. No downtime is required and file extents are redistributed automatically. I/O Distribution - I/O is spread over all the available disks automatically, without manual intervention, reducing chances of a hot spot. Stripe Width - Striping can be fine grained as in redolog files (128K for faster transfer rate) and coarse for datafiles (1MB for transfer of a large number of blocks at one time). Mirroring - Software mirroring can be set up easily, if hardware mirroring is not available. Buffering - The ASM file system is not buffered, making it direct I/O capable by design. Kernelized Asynchronous I/O - There is no special setup necessary to enable kernelized asynchronous I/O, without using raw or third-party file systems such as Veritas Quick I/O.
ASM Instance
The ASM functionality is controlled by an ASM instance. This is a special instance, not a database where users can create objects, just the memory structures and as such is very small and lightweight. With ASM, you don't have to create anything on the OS side; the feature will group a set of physical disks to a logical entity known as a diskgroup. A diskgroup is analogous to a striped and optionally mirrored, file system, with important differences: it's not a general-purpose file system for storing user files and it's not buffered. Diskgroup offers the advantage of direct access to this space as a raw device, yet provides the convenience and flexibility of a file system. All the metadata about the disks are stored in the diskgroups themselves, making them as self-describing as possible. This special ASM instance is similar to other file systems in that it must be running for ASM to work and can't be modified
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 2/14
11/22/13
by the user. One ASM instance can serve number of Oracle databases. ASM instance and database instances have to be present on same server. Otherwise it will not work. Logical volume managers typically use a function, such as hashing, to map the logical address of the blocks to the physical blocks. This computation uses CPU cycles. When a new disk is added, this typical striping function requires each bit of the entire data set to be relocated. In contrast, ASM uses this special instance to address the mapping of the fileextents to the physical disk blocks. This design, in addition to being fast in locating the file extents, helps while adding or removing disks because the locations of file extents need not be coordinated. You should start the instance up when the server is booted i.e. it should be started before the database instances, and it should be one of the last things stopped when the server is shutdown. From 11.2.0, we can use ASMCMD to start and stop the ASM instances. The initialization parameters that are specific to an ASM instance are: INSTANCE_TYPE - Set to ASM. The default is RDBMS. ASM_DISKGROUPS - The list of diskgroups that should be mounted by an ASM instance during instance startup, or by the ALTER DISKGROUP ALL MOUNT statement. ASM configuration changes are automatically reflected in this parameter. ASM_DISKSTRING - Specifies a value that can be used to limit the disks considered for discovery. The default value is NULL allowing all suitable disks to be considered. Altering the default value may improve the speed of diskgroup mount time and the speed of adding a disk to a diskgroup. Changing the parameter to a value which prevents the discovery of already mounted disks results in an error. ASM_POWER_LIMIT -The maximum power for a rebalancing operation on an ASM instance. The valid values range from 1 (default) to 11. The higher the limit the more resources are allocated resulting in faster rebalancing operations. This value is also used as the default when the POWER clause is omitted from a rebalance operation. A value of 0 disables rebalancing. ASM_PREFERRED_READ_FAILURE_GROUPS - This initialization parameter value (default is NULL) is a commadelimited list of strings that specifies the failure groups that should be preferentially read by the given instance. This parameter is generally used only for clustered ASM instances and its value can be different on different nodes. This is from Oracle 11g. DB_UNIQUE_NAME - Specifies a globally unique name for the database. This defaults to +ASM but must be altered if you intend to run multiple ASM instances. To create an ASM instance first create pfile, init+ASM.ora, in the /tmp directory, containing the following parameter. INSTANCE_TYPE = ASM Next, connect to the ideal instance. $ export ORACLE_SID=+ASM SQL> sqlplus "/as sysdba" Create a spfile using the contents of the init+ASM.ora file. SQL> CREATE SPFILE FROM PFILE='/tmp/init+ASM.ora'; SQL> startup nomount ASM instance started Total System Global Area 130023424 bytes Fixed Size 2028368 bytes Variable Size 102829232 bytes ASM Cache 25165824 bytes The ASM instance is now ready to use for creating and mounting diskgroups. Once an ASM instance is present, diskgroups can be used for the following parameters in database instances (INSTANCE_TYPE=RDBMS) to allow ASM file creation: CONTROL_FILES DB_CREATE_FILE_DEST DB_CREATE_ONLINE_LOG_DEST_n DB_RECOVERY_FILE_DEST LOG_ARCHIVE_DEST_n LOG_ARCHIVE_DEST STANDBY_ARCHIVE_DEST
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html
3/14
11/22/13
Startup of ASM Instances ASM instances are started and stopped in a similar way to normal database instances. Alarm System Includes Resources Manager Storage At home work Web Designers
The options for the STARTUP command are: NOMOUNT - Starts the ASM instance without mounting any diskgroups. MOUNT - Starts the ASM instance and mounts the diskgroups specified by the ASM_DISKGROUPS parameter. OPEN - ASM instance does not have open stage. FORCE - Performs a SHUTDOWN ABORT before restarting the ASM instance. ASMCMD equivalent for this command is startup (11g R2 command). Shutdown of ASM Instances The options for the SHUTDOWN command are: NORMAL - The ASM instance waits for all connected ASM instances and SQL sessions to exit then shuts down. IMMEDIATE - The ASM instance waits for any SQL transactions to complete then shuts down. It doesn't wait for sessions to exit. TRANSACTIONAL - Same as IMMEDIATE. ABORT - The ASM instance shuts down instantly. ASMCMD equivalent for this command is shutdown (11g R2 command).
ASM Diskgroups
The main components of ASM are diskgroups, each of which comprise of several physical disks that are controlled as a single unit. The physical disks are known as ASM disks, while the files that reside on the disks are known as ASM files. The locations and names for the files are controlled by ASM, but user-friendly aliases and directory structures can be defined for ease of reference. Diskgroup is a terminology used for logical structure which holds the database files. Each diskgroup consists of disks/raw devices where the files are actually stored. Any ASM file (and it's redundant copy) is completely contained within a single diskgroup. A diskgroup might contain files belonging to several databases and a single database can use files from multiple diskgroups. In the initial release of Oracle 10g, ASM diskgroups were a black box. We had to manipulate ASM diskgroups with SQL statements while logged in to the special ASM instance that manages the diskgroups. In Oracle 10g Release 2, Oracle introduced a new command line tool called ASMCMD that lets you look inside ASM volumes (which are called diskgroups). Now you can do many tasks from the command line. While creating a diskgroup, we have to specify an ASM diskgroup type based on one of the following three redundancy levels: Normal redundancy - for 2-way mirroring, requiring two failure groups, when ASM allocates an extent for a normal redundancy file, ASM allocates a primary copy and a secondary copy. ASM chooses the disk on which to store the secondary copy in a different failure group other than the primary copy. High redundancy - for 3-way mirroring, requiring three failure groups, in this case the extent is mirrored across 3 disks. External redundancy - to not use ASM mirroring. This is used if you are using hardware mirroring or third party redundancy mechanism like RAID, Storage arrays. ASM is supposed to stripe the data and also mirror the data (if using Normal, High redundancy). So this can be used as an alternative for RAID (Redundant Array of Inexpensive Disks) 0+1 solutions. No, we cannot modify the redundancy for diskgroup once it has been created. To alter it we will be required to create a new diskgroup and move the files to it. This can also be done by restoring full backup on the new diskgroup. Failure groups are defined within a diskgroup to support the required level of redundancy, using normal/high redundancy. They contain the mirrored ASM extents and must be containing different disks and preferably on separate disk controller. In addition failure groups and preferred names for disks can be defined in CREATE DISKGROUP statement. If the NAME clause is omitted the disks are given a system generated name like "disk_group_1_0001". The FORCE option can be used to move a disk from another diskgroup into this one.
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html
4/14
11/22/13
Creating diskgroups
SQL> CREATE DISKGROUP dg_asm_data NORMAL REDUNDANCY FAILGROUP failure_group_1 DISK '/devices/diska1' NAME diska1, '/devices/diska2' NAME diska2, FAILGROUP failure_group_2 DISK '/devices/diskb1' NAME diskb1, '/devices/diskb2' NAME diskb2; For two-way mirroring we would expect a diskgroup to contain two failure groups, so individual files are written to two locations. SQL> CREATE DISKGROUP dg_asm_fra HIGH REDUNDANCY FAILGROUP failure_group_1 DISK '/devices/diska1' NAME diska1, '/devices/diska2' NAME diska2, FAILGROUP failure_group_2 DISK '/devices/diskb1' NAME diskb1, '/devices/diskb2' NAME diskb2, FAILGROUP failure_group_3 DISK '/devices/diskc1' NAME diskc1, '/devices/diskc2' NAME diskc2; For three-way mirroring we would expect a diskgroup to contain three failure groups, so individual files are written to three locations. SQL> CREATE DISKGROUP dg_grp1 EXTERNAL REDUNDANCY DISK '/dev/d1','/dev/d2','/dev/d3','/dev/d4' ... ...; In the above command, database will create a diskgroup named dg_grp1 with the physical disks named /dev/d1, /dev/d2, and so on. Instead of giving disks separately, we can also specify disk names in wildcards in the DISK clause as DISK '/dev/d*'. We have also specified a clause EXTERNAL REDUNDANCY, which indicates that the failure of a disk will bring down the diskgroup. This is usually the case when the redundancy is provided by the hardware, such as mirroring. If there is no hardware based redundancy, the ASM can be set up to create a special set of disks called failgroup in the diskgroup to provide that redundancy. SQL> CREATE DISKGROUP dskgrp1 NORMAL REDUNDANCY FAILGROUP failgrp1 DISK '/dev/d1','/dev/d2', FAILGROUP failgrp2 DISK '/dev/d3','/dev/d4'; Although it may appear as such, d3 and d4 are not mirrors of d1 and d2. Rather, ASM uses all the disks to create a faulttolerant system. For example, a file on the diskgroup might be created in d1 with a copy maintained on d4. A second file may be created on d3 with copy on d2, and so on. That is, primary copy will be on one failure group and secondary copy will be another (third copy will be another, for high redundancy). Failure of a specific disk allows a copy on another disk so that the operation can continue. For example, you could lose the controller for both disks d1 and d2 and ASM would mirror copies of the extents across the failure group to maintain data integrity. SQL> CREATE DISKGROUP dg1 DISK '/dev/raw/*' ATTRIBUTE 'compatible.rdbms' = '11.1', 'compatible.asm' = '11.1'; (11g R1 command) SQL> CREATE DISKGROUP dg2 EXTERNAL REDUNDANCY DISK '/dev/sde1' ATRRIBUTE 'au_size' = '32M'; (11g R1 command) SQL> CREATE DISKGROUP archdg NORMAL REDUNDANCY FAILGROUP fg1 DISK '/devices/diska1','/devices/diska2','/devices/diska3','/devices/diska4' FAILGROUP fg2 DISK '/devices/diskb1','/devices/diskb2','/devices/diskb3','/devices/diskb4' ATTRIBUTE 'au_size'='4M','compatible.asm'='11.2','compatible.rdbms'='11.2','compatible.advm'='11.2'; (11g R2 command) ASMCMD equivalent for this command is mkdg (11g R2 command).
Listing diskgroups
To find out all the diskgroups: SQL> SELECT * FROM V$ASM_DISKGROUP; ASMCMD equivalent for this command is lsdg.
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 5/14
11/22/13
Dropping diskgroups
Diskgroups can be deleted using the DROP DISKGROUP statement. SQL> DROP DISKGROUP disk_group_1 INCLUDING CONTENTS; SQL> DROP DISKGROUP disk_group_1 FORCE; (11g R1 command) SQL> DROP DISKGROUP disk_group_1 FORCE INCLUDING CONTENTS; (11gR1 command) ASMCMD equivalent for this command is dropdg (11g R2 command).
Altering diskgroups
Disks can be added or removed from diskgroups using the ALTER DISKGROUP statement. Remember that the wildcard "*" can be used to reference disks so long as the resulting string does not match a disk already used by an existing diskgroup. Adding disks We may have to add additional disks into the diskgroup to accommodate growing demand. SQL> ALTER DISKGROUP dskgrp1 ADD DISK '/dev/d5'; SQL> ALTER DISKGROUP dg1 ADD DISK '/devices/disk*3', '/devices/disk*4'; ASMCMD equivalent for this command is chdg (11g R2 command). Listing disks The following command shows all the disks managed by the ASM instance for all the client databases. SQL> SELECT * FROM V$ASM_DISK; ASMCMD equivalent for this command is lsdsk (11g R1 command). Listing client databases The following command shows all the database instances connected to the ASM instance. SQL> SELECT * FROM V$ASM_CLIENT; ASMCMD equivalent for this command is lsct . Dropping disks We can remove a disk from diskgroup. SQL> ALTER DISKGROUP dg4 DROP DISK diska4; ASMCMD equivalent for this command is chdg (11g R2 command). Resizing disks Disks can be resized using the RESIZE clause of the ALTER DISKGROUP statement. The statement can be used to resize individual disks, all disks in a failure group or all disks in the diskgroup. If the SIZE clause is omitted the disks are resized to the size of the disk returned by the OS. SQL> ALTER DISKGROUP dg_data_1 RESIZE DISK diska1 SIZE 150G; Resizing all disks in a failure group SQL> ALTER DISKGROUP dg_data_1 RESIZE DISKS IN FAILGROUP fg_1 SIZE 50G; Resizing all disks in a diskgroup SQL> ALTER DISKGROUP dg_data_1 RESIZE ALL SIZE 100G; Undropping disks The UNDROP DISKS clause of the ALTER DISKGROUP statement allows pending disk drops to be undone. It will not revert drops that have completed, or disk drops associated with the dropping of a diskgroup. SQL> ALTER DISKGROUP disk_group_1 UNDROP DISKS; Online disks SQL> ALTER DISKGROUP data ONLINE DISK 'disk_0000', 'disk_0001'; SQL> ALTER DISKGROUP data ONLINE DISKS IN FAILGROUP 'fg_99'; SQL> ALTER DISKGROUP data ONLINE ALL; ASMCMD equivalent for this command is online (11gR2 command). Offline disks SQL> ALTER DISKGROUP data OFFLINE DISK 'disk_0000', 'disk_0001'; SQL> ALTER DISKGROUP data OFFLINE DISKS IN FAILGROUP 'fg_99';
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 6/14
11/22/13
SQL> ALTER DISKGROUP data OFFLINE DISK d1_0001 DROP AFTER 30m; ASMCMD equivalent for this command is offline (11gR2 command). Mounting diskgroups Diskgroups are mounted at ASM instance startup and unmounted at ASM instance shutdown. Manual mounting and dismounting can be accomplished using the ALTER DISKGROUP statement as below. SQL> ALTER DISKGROUP ALL MOUNT; SQL> ALTER DISKGROUP dg_data2 MOUNT; SQL> ALTER DISKGROUP dg_data2 MOUNT RESTRICTED; (11gR1 command) ASMCMD equivalent for this command is mount (11gR2 command). Dismounting diskgroups SQL> ALTER DISKGROUP ALL DISMOUNT; SQL> ALTER DISKGROUP dg_fra DISMOUNT; ASMCMD equivalent for this command is umount (11gR2 command). Changing attributes SQL> ALTER DISKGROUP data3 SET ATTRIBUTE 'compatible.rdbms' = '11.1'; (11gR1 command) SQL> ALTER DISKGROUP data3 SET ATTRIBUTE 'compatible.asm' = '11.2'; (11gR1 command) SQL> ALTER DISKGROUP data3 SET ATTRIBUTE 'disk_repair_time' = '4.5h'; (11gR1 command) ASMCMD equivalent for this command is setattr (11gR2 command). Listing attributes SQL> SELECT * FROM V$ASM_ATTRIBUTE; ASMCMD equivalent for this command is lsattr (11gR2 command). Rebalancing Diskgroups can be rebalanced manually using the REBALANCE clause of the ALTER DISKGROUP statement. If the POWER clause is omitted the ASM_POWER_LIMIT parameter value is used. Rebalancing is only needed when the speed of the automatic rebalancing is not appropriate. SQL> ALTER DISKGROUP disk_group_1 REBALANCE POWER 6; ASMCMD equivalent for this command is rebal (11gR2 command). IO statistics of a diskgroup SQL> SELECT * FROM V$ASM_DISK_IOSTAT; ASMCMD equivalent for this command is iostat (11gR2 command). Until 11.1.0, all the above commands can not be performed with ASMCMD. From 11.2.0, we can.
Directories
As in other file systems, an ASM directory is a container for files, and an ASM directory can be part of a tree structure of other directories. The fully qualified filename represents a hierarchy of directories in which the plus sign (+) represent the root directory. In each diskgroup, ASM automatically creates a directory hierarchy that corresponds to the structure of the fully qualified filenames in the diskgroup. The directories in this hierarchy are known as system-generated directories. An absolute path refers to the full path of a file or directory. An absolute path begins with a plus sign (+) followed by a diskgroup name, followed by subsequent directories in the directory tree. The absolute path includes directories until the file or directory is reached. A fully qualified filename is an example of an absolute path to a file. A relative path includes only the part of the filename or directory name that is not part of the current directory. That is, the path to the file or directory is relative to the current directory. A directory hierarchy can be defined using the ALTER DISKGROUP statement to support ASM file aliasing. Creating a directory SQL> ALTER DISKGROUP dg_1 ADD DIRECTORY '+dg_1/my_dir'; ASMCMD equivalent for this command is mkdir .
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 7/14
11/22/13
Renaming a directory SQL> ALTER DISKGROUP dg_1 RENAME DIRECTORY '+dg_1/my_dir' TO '+dg_1/my_dir_2'; Deleting a directory SQL> ALTER DISKGROUP dg_1 DROP DIRECTORY '+dg_1/my_dir_2' FORCE; ASMCMD equivalent for this command is rm.
Files
There are several ways to reference ASM files. Some forms are used during creation and some for referencing ASM files. Every file created in ASM gets a system-generated filename, known as fully qualified filename, this is same as complete path name in a local file system. The forms of the ASM filenames are:
Filename Type Fully Qualified ASM Filename Numeric ASM Filename Alias ASM Filenames Alias ASM Filename with Template Incomplete ASM Filename Incomplete ASM Filename with Template
ASM generates filenames according to the following scheme: +diskGroupName/databaseName/fileType/fileTypeTag.fileNumber.incarnation e.g: +dgroup2/crm/CONTROLFILE/Current.256.541956473 +dg_fra/hrms/DATAFILE/users.309.621906475 ASM does not place system-generated files into user-created directories; it places them only in system-generated directories. We can add aliases or other directories to a user-created directory. Dropping Files Files are not deleted automatically if they are created using aliases, as they are not Oracle Managed Files (OMF), or if a recovery is done to a point-in-time before the file was created. For these circumstances it is necessary to manually delete the files, as shown below. Dropping file using an alias SQL> ALTER DISKGROUP dg_2 DROP FILE '+dg_2/my_dir/my_file.dbf'; Dropping file using a numeric form filename SQL> ALTER DISKGROUP dg_2 DROP FILE '+dg_2.321.123456789'; Dropping file using a fully qualified filename SQL> ALTER DISKGROUP dg_2 DROP FILE '+dg_2/mydb/datafile/my_ts.292.265390671'; ASMCMD equivalent for this command is rm.
Aliases
Aliases allow you to reference ASM files using user-friendly names, rather than the fully qualified ASM filenames. Creating an alias Creating an alias, using the fully qualified filename SQL> ALTER DISKGROUP dg_3 ADD ALIAS '+dg_3/my_dir/users.dbf' FOR '+dg_3/mydb/datafile/users.392.333222555'; Creating an alias, using the numeric form filename SQL> ALTER DISKGROUP dg_3 ADD ALIAS '+dg_3/my_dir/my_file.dbf' FOR '+dg_3.317.111222333'; ASMCMD equivalent for this command is mkalias. Renaming an alias
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 8/14
11/22/13
SQL> ALTER DISKGROUP dg_3 RENAME ALIAS '+dg_3/my_dir/my_file.dbf' TO '+dg_3/my_dir/my_file2.dbf'; Deleting an alias SQL> ALTER DISKGROUP dg_3 DELETE ALIAS '+dg_3/my_dir/my_file.dbf'; ASMCMD equivalent for this command is rmalias. Attempting to drop a system alias results in an error.
Templates
Templates are named groups of attributes that can be applied to the files within a diskgroup. The level of redundancy and the granularity of the striping can be controlled using templates. Default templates are provided for each file type stored by ASM, but additional templates can be defined as needed. Available attributes are: UNPROTECTED - No mirroring or striping regardless of the redundancy setting. MIRROR - Two-way mirroring for normal redundancy and three-way mirroring for high redundancy. COARSE - Specifies lower granularity for striping. FINE - Specifies higher granularity for striping. MIRROR, COARSE, FINE attributes are cannot be set for external redundancy. Creating a template SQL> ALTER DISKGROUP dg_4 ADD TEMPLATE mf_template ATTRIBUTES (MIRROR FINE); ASMCMD equivalent for this command is mktmpl (11gR2 command). Modifying a template SQL> ALTER DISKGROUP dg_4 ALTER TEMPLATE c_template ATTRIBUTES (COARSE); ASMCMD equivalent for this command is chtmpl (11gR2 command). Listing templates SQL> SELECT * FROM V$ASM_TEMPLATE; ASMCMD equivalent for this command is lstmpl (11gR2 command). Dropping a template SQL> ALTER DISKGROUP dg_4 DROP TEMPLATE u_template; ASMCMD equivalent for this command is rmtmpl (11gR2 command).
Checking Metadata
The internal consistency of diskgroup metadata can be checked in a number of ways using the CHECK clause of the ALTER DISKGROUP statement. Checking metadata for a specific file SQL> ALTER DISKGROUP dg_5 CHECK FILE '+dg_5/my_dir/my_file.dbf' Checking metadata for a specific disk in the diskgroup SQL> ALTER DISKGROUP dg_5 CHECK DISK diska1; Checking metadata for a specific failure group in the diskgroup SQL> ALTER DISKGROUP dg_5 CHECK FAILGROUP failure_group_1; Checking metadata for all disks in the diskgroup SQL> ALTER DISKGROUP dg_5 CHECK ALL; SQL> ALTER DISKGROUP dg_5 CHECK; SQL> ALTER DISKGROUP dg_5 CHECK NOREPAIR; SQL> ALTER DISKGROUP dg_5 CHECK REPAIR; ASMCMD equivalent for this command is chkdg (11gR2 command).
User Management
From Oracle 11g release 2, we can create ASM users and usergroups and manipulate the permissions and ownership of
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 9/14
11/22/13
files. Creating an ASM usergroup SQL> ALTER DISKGROUP data_dg ADD USERGROUP 'grp1'; SQL> ALTER DISKGROUP data_dg ADD USERGROUP 'grp2' WITH MEMBER 'oracle1','oracle2'; ASMCMD equivalent for this command is mkgrp (11gR2 command). Listing ASM usergroups To find out the list of ASM usergroups. SQL> SELECT * FROM V$ASM_USERGROUP; ASMCMD equivalent for this command is lsgrp (11gR2 command). Dropping an ASM usergroup SQL> ALTER DISKGROUP data_dg DROP USERGROUP 'grp1'; ASMCMD equivalent for this command is rmgrp (11gR2 command). Modifying(adding/deleting ASM users to/from) an ASM usergroup SQL> ALTER DISKGROUP data_dg MODIFY USERGROUP 'grp2' ADD MEMBER 'oracle3'; SQL> ALTER DISKGROUP data_dg MODIFY USERGROUP 'grp2' DROP MEMBER 'oracle3'; ASMCMD equivalent for this command is grpmod (11gR2 command). Creating an ASM user SQL> ALTER DISKGROUP data_dg ADD USER 'oracle1'; ASMCMD equivalent for this command is mkusr (11gR2 command). Listing ASM users To find out the list of ASM users. SQL> SELECT * FROM V$ASM_USER; ASMCMD equivalent for this command is lsusr (11gR2 command). Listing ASM usergroups to which user belongs SQL> SELECT * FROM V$ASM_USERGROUP_MEMBER; ASMCMD equivalent for this command is groups (11gR2 command). Dropping an ASM user SQL> ALTER DISKGROUP data_dg DROP USER 'oracle1'; ASMCMD equivalent for this command is rmusr (11gR2 command). Modifying permissions for a file SQL> ALTER DISKGROUP data_dg SET PERMISSION OWNER=read write, GROUP=read only, OTHER=none FOR FILE '+data_dg/controlfile.f'; ASMCMD equivalent for this command is chmod (11gR2 command). Modifying ownership of a file SQL> ALTER DISKGROUP data_dg SET OWNERSHIP OWNER='oracle1', GROUP='grp1' FOR FILE '+data_dg/controlfile.f'; ASMCMD equivalent for this command is chown (11gR2 command).
Volume Management
From 11g release 2, we can create Oracle ASM Dynamic Volume Manager (Oracle ADVM) volumes in a diskgroups. The volume device associated with the dynamic volume can then be used to host an (Oracle ACFS) file system. Creating a volume SQL> ALTER DISKGROUP data_dg ADD VOLUME volume1 SIZE 20G; ASMCMD equivalent for this command is volcreate (11gR2 command). Listing volume information To find out the volumes information. SQL> SELECT * FROM V$ASM_VOLUME; ASMCMD equivalent for this command is volinfo (11gR2 command). Listing volume statistics To find out the volumes statistics information. SQL> SELECT * FROM V$ASM_VOLUME_STAT; ASMCMD equivalent for this command is volstat (11gR2 command).
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 10/14
11/22/13
Dropping a volume SQL> ALTER DISKGROUP data_dg DROP VOLUME volume1; ASMCMD equivalent for this command is voldelete (11gR2 command). Resizing a volume SQL> ALTER DISKGROUP fra_dg RESIZE VOLUME volume1 SIZE 25G; ASMCMD equivalent for this command is volresize (11gR2 command). Disabling a volume SQL> ALTER DISKGROUP redo_dg DISABLE VOLUME volume1; SQL> ALTER DISKGROUP ALL DISABLE VOLUME ALL; ASMCMD equivalent for this command is voldisable (11gR2 command). Enabling a volume SQL> ALTER DISKGROUP arch_dg ENABLE VOLUME volume1; ASMCMD equivalent for this command is volenable (11gR2 command). Setting a volume SQL> ALTER DISKGROUP asm_dg_data MODIFY VOLUME volume1 USAGE 'acfs'; ASMCMD equivalent for this command is volset (11gR2 command).
Misc
Listing the current operations SQL> SELECT * FROM V$ASM_OPERATION; ASMCMD equivalent for this command is lsop (11gR2 command).
Creating Tablespaces
Now create a tablespace in the main database using a datafile in the ASM-enabled storage. SQL> CREATE TABLESPACE user_data DATAFILE '+dskgrp1/user_data_01' SIZE 1024M; ASM filenames can be used in place of conventional filenames for most Oracle file types, including controlfiles, datafiles, logfiles etc. For example, the following command creates a new tablespace with a datafile in the disk_group_1 diskgroup. SQL> CREATE TABLESPACE my_ts DATAFILE '+disk_group_1' SIZE 100M AUTOEXTEND ON; Note how the diskgroup is used as a virtual file system. This approach is useful not only in datafiles, but in other types of Oracle files as well. For instance, we can create online redo log files as ... LOGFILE GROUP 1 ( '+dskgrp1/redo/group_1.258.659723485', '+dskgrp2/redo/group_1.258.659723485' ) SIZE 50M, ... Archived log destinations can also be set to a diskgroup. Everything related to Oracle database can be created in an ASM diskgroup. Backup is another great use of ASM. You can set up a bunch of inexpensive disks to create the recovery area of a database, which can be used by RMAN to create backup datafiles and archived log files. ASM supports files created by and read by the Oracle database only; it is not a replacement for a general-purpose file system. Until Oracle 11g release1, we cannot store binaries or flat files. We cannot use ASM for storing the voting disk and OCR. It is due to the fact that Clusterware starts before ASM instance and it should be able to access these files which are not possible if you are storing it on ASM. You will have to use raw devices or OCFS or any other shared storage. But from11g release 2, we can store ALL files on ASM. Can we see the files stored in the ASM instance using standard Unix commands? No, you cannot see the files using standard Unix commands like ls. You need to use utility called asmcmd to do this.Oracle 10g release2 introduces asmcmd which makes administration very easy. $ asmcmd ASMCMD> ASMLIB is the support library for the ASM. ASMLIB allows an Oracle database using ASM more efficient and capable access to diskgroups. The purpose of ASMLIB, is to provide an alternative interface to identify and access block devices. ASMLIB API enables storage and OS vendors to supply extended storage-related features.
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html 11/14
11/22/13
The following method shows how a database can be migrated to ASM from a disk based backup:
2) Modify the parameter file of the database as follows: Set DB_CREATE_FILE_DEST and DB_CREATE_ONLINE_LOG_DEST_n parameters to the relevant ASM diskgroups. 3) Remove CONTROL_FILES parameter from the spfile so the control files will be moved to the DB_CREATE_* destination and the spfile gets updated automatically. If you are using a pfile the CONTROL_FILES parameter must be set to the appropriate ASM files or aliases. 4) Start the database in nomount mode. RMAN> STARTUP NOMOUNT 5) Restore the controlfile into the new location from the old location. RMAN> RESTORE CONTROLFILE FROM 'old_control_file_name'; 6) Mount the database. RMAN> ALTER DATABASE MOUNT; 7) Copy the database into the ASM diskgroup. RMAN> BACKUP AS COPY DATABASE FORMAT '+disk_group'; 8) Switch all datafile to the new ASM location. RMAN> SWITCH DATABASE TO COPY; 9) Open the database. RMAN> ALTER DATABASE OPEN; 10) Create new redo logs in ASM and delete the old ones.
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html
12/14
11/22/13
1. Oracle Flex ASM - This feature of Oracle Clusterware 12c claims to reduce per-node overhead of using ASM instance. Now the instances can use remote node ASM for any planned/unplanned downtime. ASM metadata requests can be converted by non-local instance of ASM. 2. ASM Disk Scrubbing - From RAC 12c, ASM comes with disk scrubbing feature so that logical corruptions can be discovered. Also Oracle 12c ASM can automatically correct this in normal or high redundancy diskgroups. 3. Oracle ASM Disk Resync & Rebalance enhancements.
ASM Views
The ASM configuration can be viewed using the V$ASM_% views, which contain information depending on whether they are queried from the ASM instance, or a dependant database instance.
In ASM instance Displays a row for each alias present in every diskgroup mounted by the ASM instance. Displays attributes of diskgroups. Displays a row for each database instance using a diskgroup managed by the ASM instance. Displays a row for each disk discovered by the ASM instance, including disks which are not part of any diskgroup. Displays IO statistics of disks. Displays a row for each diskgroup discovered by the ASM instance.
In DB instance Returns no rows. Displays attributes of diskgroups. Displays a row for the ASM instance if the database has open ASM files. Displays a row for each disk in diskgroups in use by the database instance. Displays IO statistics of disks. Displays a row for each diskgroup mounted by the local ASM instance.
V$ASM_CLIENT
V$ASM_DISK or V$ASM_DISK_STAT
V$ASM_FILESYSTEM (11gR2)
Displays a row for each file for each diskgroup mounted by the Displays no rows. ASM instance. Displays a row for each filesystem for each diskgroup Displays no rows. mounted by the ASM instance.
13/14
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html
11/22/13
V$ASM_OPERATION
V$ASM_TEMPLATE
Displays a row for each file for each long running operation executing in the ASM instance. Displays a row for each template present in each diskgroup mounted by the ASM instance. Displays a row for each ASM user. Displays a row for each ASM usergroup. Displays ASM usergroups and it's members.
Displays no rows. Displays a row for each template present in each diskgroup mounted by the ASM instance. -
ASM backup can be taken by spooling the output of the ASM views to text file. SPOOL asm_views.log SET ECHO ON SELECT * FROM V$ASM_ALIAS; SELECT * FROM V$ASM_ATTRIBUTE; SELECT * FROM V$ASM_CLIENT; SELECT * FROM V$ASM_DISK; SELECT * FROM V$ASM_DISK_IOSTAT;SELECT * FROM V$ASM_DISK_STAT; SELECT * FROM V$ASM_DISKGROUP; SELECT * FROM V$ASM_DISKGROUP_STAT; SELECT * FROM V$ASM_FILE; SELECT * FROM V$ASM_FILESYSTEM; SELECT * FROM V$ASM_OPERATION; SELECT * FROM V$ASM_TEMPLATE; SELECT * FROM V$ASM_USER; SELECT * FROM V$ASM_USERGROUP; SELECT * FROM V$ASM_USERGROUP_MEMBER; SELECT * FROM V$ASM_VOLUME; SELECT * FROM V$ASM_VOLUME_STAT; SPOOL OFF
satya-dba.blogspot.in/2010/03/automatic-storage-management-asm-10g.html
14/14