Overview of ‘ASM’ - Automatic Storage Management
·
ASM simplifies administration of
Oracle related files by allowing the administrator to reference disk groups
rather than individual disks and files, which are managed by ASM.
·
The ASM functionality is an extension
of the Oracle Managed Files (OMF) functionality that also includes striping and
mirroring to provide balanced and secure storage.
·
The new ASM functionality can be
used in combination with existing raw and cooked file systems, along with OMF
and manually managed files.
·
The ASM functionality is controlled
by an ASM instance. This is not a full database instance, just the memory
structures and as such is very small and lightweight.
·
The main components of ASM are disk
groups, 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.
·
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.
·
Failure groups are defined within a
disk group to support the required level of redundancy. For two-way mirroring
you would expect a disk group to contain two failure groups so individual files
are written to two locations.
In summary ASM provides the
following functionality:
- Manages groups of disks, called disk groups.
- Manages disk redundancy within a disk group.
- Provides near-optimal I/O balancing without any manual tuning.
- Enables management of database objects without specifying mount points and filenames.
- Supports large files.
Initialization
Parameters for ASM Instance Creation
The initialization parameters that
are of specific interest for an ASM instance are:
- INSTANCE_TYPE - Set to ASM or RDBMS depending on the instance type. The default is RDBMS.
- 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.
- ASM_POWER_LIMIT -The maximum power for a rebalancing operation on an ASM instance. The valid values range from 1 to 11, with 1 being the default. 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.
- ASM_DISKGROUPS - The list of disk groups 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. Altering the default value may improve the speed of disk group mount time and the speed of adding a disk to a disk group. Changing the parameter to a value which prevents the discovery of already mounted disks results in an error. The default value is NULL allowing all suitable disks to be considered.
·
Incorrect usage of
parameters in ASM or RDBMS instances result in ORA-15021 errors.
To
create an ASM instance first create a parameter file "init+ASM.ora”
containing the following information.
INSTANCE_TYPE=ASM
Next,
using SQL*Plus connect to the ide instance.
export
ORACLE_SID=+ASM
sqlplus
/ as sysdba
Create
an spfile using the contents of the "init+ASM.ora" file.
SQL>
CREATE SPFILE FROM PFILE='/tmp/init+ASM.ora';
File created.
Finally,
start the instance with the NOMOUNT option.
SQL>
startup nomount
ASM instance started
Total System Global Area 125829120 bytes
Fixed Size 1301456 bytes
Variable Size 124527664 bytes
Database Buffers 0 bytes
Redo Buffers 0 bytes
SQL>
The
ASM instance is now ready to use for creating and mounting disk groups. To
shutdown the ASM instance issue the following command.
SQL> shutdown
ASM instance shutdown
SQL>
Once
an ASM instance is present disk groups can be used for the following parameters
in database instances (INSTANCE_TYPE=RDBMS) to allow ASM file creation:
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n
DB_RECOVERY_FILE_DEST
CONTROL_FILES
LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST
STANDBY_ARCHIVE_DEST
Startup and Shutdown of
ASM Instances
ASM
instance are started and stopped in a similar way to normal database instances.
The options for the STARTUP
commands are:
·
FORCE
- Performs a SHUTDOWN
ABORT before
restarting the ASM instance.
·
MOUNT
- Starts the ASM instance and mounts the disk groups specified by the ASM_DISKGROUPS parameter.
·
NOMOUNT
- Starts the ASM instance without mounting any disk groups.
·
OPEN -
This is not a valid option for an ASM instance.
SHUTDOWN
commands 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.
Administering ASM Disk Groups
There are a few basic points to consider when planning to
use ASM:
- In most cases you will only need two disk groups (DATA and FRA), where DATA holds all database related files and FRA holds the fast recovery area, including multiplexed copies on online redo logs and controlfiles. Typically, the FRA disk group will be twice the size of the DATA disk group, since it must hold all backups.
- Oracle recommends a minimum of 4 LUNs per disk group, with LUNs using hardware RAID and external redundancy if possible.
- All LUNs within a disk group should be the same size and have the same performance characteristics.
- LUNs should be made up from disks dedicated to Oracle, not shared with other applications.
Now let's look at basic administration of disk groups.
Disks
Disk groups are created using theCREATE
DISKGROUP
statement. This statement allows you to specify the
level of redundancy:NORMAL REDUNDANCY
- Two-way mirroring, requiring two failure groups.HIGH REDUNDANCY
- Three-way mirroring, requiring three failure groups.EXTERNAL REDUNDANCY
- No mirroring for disks that are already protected using hardware mirroring or RAID. If you have hardware RAID it should be used in preference to ASM redundancy, so this will be the standard option for most installations.
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 disk group into this one.CREATE DISKGROUP Krish_grp1 NORMAL REDUNDANCY
FAILGROUP krish_failure_group_1 DISK
'/data01/diska1' NAME diska1,
'/data01/diska2' NAME diska2
FAILGROUP krish_failure_group_2 DISK
'/data02/diskb1' NAME diskb1,
'/data02/diskb2' NAME diskb2;
Disk groups can be deleted using the DROP DISKGROUP
statement.DROP DISKGROUP krish_group_1 INCLUDING CONTENTS;
Disks can be added or removed from disk groups 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 disk group.-- Add disks.
ALTER DISKGROUP krish_group_1 ADD DISK
'/data01/disk*3',
'/data01/disk*4';
-- Drop a disk.
ALTER DISKGROUP krish_group_1 DROP DISK diska2;
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 disk group. If the SIZE
clause is omitted the disks are
resized to the size of the disk returned by the OS.-- Resize a specific disk.
ALTER DISKGROUP krish_group_1
RESIZE DISK diska1 SIZE 100G;
-- Resize all disks in a failure group.
ALTER DISKGROUP krish_group_1
RESIZE DISKS IN FAILGROUP failure_group_1 SIZE 100G;
-- Resize all disks in a disk group.
ALTER DISKGROUP krish_group_1
RESIZE ALL SIZE 100G;
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 disk group.ALTER DISKGROUP krish_group_1 UNDROP DISKS;
Disk groups 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.ALTER DISKGROUP krish_group_1 REBALANCE POWER 5;
Disk groups 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 seen below.ALTER DISKGROUP ALL DISMOUNT;
ALTER DISKGROUP ALL MOUNT;
ALTER DISKGROUP krish_group_1 DISMOUNT;
ALTER DISKGROUP krish_group_1 MOUNT;
Templates
Templates are named groups of attributes that can be
applied to the files within a disk group. The following example show how
templates can be created, altered and dropped.
-- Create a new template.
ALTER
DISKGROUP krish_group_1 ADD TEMPLATE krish_template ATTRIBUTES (MIRROR FINE);
-- Modify template.
ALTER
DISKGROUP krish_group_1 ALTER TEMPLATE krish_template ATTRIBUTES (COARSE);
-- Drop template.
ALTER
DISKGROUP disk_group_1 DROP TEMPLATE krish_template;
Available attributes include:
·
UNPROTECTED -
No mirroring or striping regardless of the redundancy setting.
·
MIRROR -
Two-way mirroring for normal redundancy and three-way mirroring for high
redundancy. This attribute cannot be set for external redundancy.
·
COARSE -
Specifies lower granularity for striping. This attribute cannot be set for
external redundancy.
·
FINE -
Specifies higher granularity for striping. This attribute cannot be set for
external redundancy.
Directories:
A directory hierarchy can be defined using the
ALTER DISKGROUP
statement to support ASM file
aliasing. The following examples show how ASM directories can be created,
modified and deleted.
-- Create a directory.
ALTER DISKGROUP krish_group_1 ADD
DIRECTORY '+ krish_group_1/my_dir';
-- Rename a directory.
ALTER DISKGROUP krish_group_1
RENAME DIRECTORY '+ krish_group_1/my_dir' TO '+ krish_group_1/my_dir_2';
-- Delete a directory and all its contents.
ALTER DISKGROUP krish_group_1
DROP DIRECTORY '+ krish_group_1/my_dir_2' FORCE;
Aliases:
Aliases allow you to reference ASM files using
user-friendly names, rather than the fully qualified ASM filenames.
-- Create an alias using the fully qualified filename.
ALTER
DISKGROUP krish_group_1 ADD ALIAS '+ krish_group_1/my_dir/my_file.dbf'
FOR '+ krish_group_1/mydb/datafile/my_ts.342.3';
-- Create an alias using the numeric form filename.
ALTER
DISKGROUP krish_group_1 ADD ALIAS '+ krish_group_1/my_dir/my_file.dbf'
FOR '+ krish_group_1.342.3';
-- Rename an alias.
ALTER
DISKGROUP krish_group_1 RENAME ALIAS '+ krish_group_1/my_dir/my_file.dbf'
TO '+ krish_group_1/my_dir/my_file2.dbf';
-- Delete an alias.
ALTER
DISKGROUP krish_group_1 DELETE ALIAS '+ krish_group_1/my_dir/my_file.dbf';
Attempting to drop a system alias results in an error.
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.
-- Drop file using an alias.
ALTER
DISKGROUP krish_group_1 DROP FILE '+ krish _group_1/my_dir/my_file.dbf';
-- Drop file using a numeric form filename.
ALTER
DISKGROUP krish_group_1 DROP FILE '+ krish_group_1.342.3';
-- Drop file using a fully qualified filename.
ALTER
DISKGROUP krish_group_1 DROP FILE '+ krish_group_1/mydb/datafile/my_ts.342.3';
Checking Metadata
The internal consistency of disk group metadata can be
checked in a number of ways using the
CHECK
clause of the ALTER DISKGROUP
statement.
-- Check metadata for a specific file.
ALTER
DISKGROUP krish_group_1 CHECK FILE '+ krish_group_1/my_dir/my_file.dbf'
-- Check metadata for a specific failure group in the
disk group.
ALTER
DISKGROUP krish_group_1 CHECK FAILGROUP failure_group_1;
-- Check metadata for a specific disk in the disk group.
ALTER
DISKGROUP krish_group_1 CHECK DISK diska1;
-- Check metadata for all disks in the disk group.
ALTER
DISKGROUP krish_group_1 CHECK ALL;
ASM Views
The ASM configuration can be viewed using the V$ASM_% views
View
|
ASM
Instance
|
DB
Instance
|
V$ASM_ALIAS
|
Displays a
row for each alias present in every disk group mounted by the ASM instance.
|
Returns no
rows
|
V$ASM_CLIENT
|
Displays a
row for each database instance using a disk group managed by the ASM
instance.
|
Displays a
row for the ASM instance if the database has open ASM files.
|
V$ASM_DISK
|
Displays a
row for each disk discovered by the ASM instance, including disks which are
not part of any disk group.
|
Displays a
row for each disk in disk groups in use by the database instance.
|
V$ASM_DISKGROUP
|
Displays a
row for each disk group discovered by the ASM instance.
|
Displays a
row for each disk group mounted by the local ASM instance.
|
V$ASM_FILE
|
Displays a
row for each file for each disk group mounted by the ASM instance.
|
Displays
no rows.
|
V$ASM_OPERATION
|
Displays a
row for each file for each long running operation executing in the ASM
instance.
|
Displays
no rows.
|
V$ASM_TEMPLATE
|
Displays a
row for each template present in each disk group mounted by the ASM instance.
|
Displays a
row for each template present in each disk group mounted by the ASM instance
with which the database instance communicates.
|
Migrating
to ASM Using RMAN
The following method shows how a
primary database can be migrated to ASM from a disk based backup:
·
Disable change tracking (only
available in Enterprise Edition) if it is currently being used.
SQL>
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
·
Shutdown the database.
SQL>
SHUTDOWN IMMEDIATE
·
Modify the parameter file of the
target database as follows:
Set the DB_CREATE_FILE_DEST and DB_CREATE_ONLINE_LOG_DEST_n
parameters to the relevant ASM disk groups.
Remove the 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.
·
Start the database in nomount mode.
RMAN>
STARTUP NOMOUNT
·
Restore the controlfile into the new
location from the old location.
RMAN>
RESTORE CONTROLFILE FROM 'old_control_file_name';
·
Mount the database.
RMAN>
ALTER DATABASE MOUNT;
·
Copy the database into the ASM disk
group.
RMAN>
BACKUP AS COPY DATABASE FORMAT '+disk_group';
·
Switch all datafile to the new ASM
location.
RMAN>
SWITCH DATABASE TO COPY;
·
Open the database.
RMAN>
ALTER DATABASE OPEN;
·
Create new redo logs in ASM and
delete the old ones.
·
Enable change tracking if it was
being used.
SQL>
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
No comments:
Post a Comment
Thank for showing interest in giving comments/feedback/suggestions
Note: Only a member of this blog may post a comment.