Documente Academic
Documente Profesional
Documente Cultură
Database 10g
Automatic Storage Management (ASM) is a new feature that has be introduced in Oracle 10g to
simplify the storage of Oracle datafiles, controlfiles and logfiles.
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 know 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.
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.
To create an ASM instance first create a file called init+ASM.ora in the /tmp directory 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
• 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
ASM instance are started and stopped in a similar way to normal database instances. The
options for the STARTUP 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.
Disks
Disk groups are created using the CREATE DISKGROUP statement. This statement allows you to
specify the level of redundancy:
In addition failure groups and preferred names for disks can be defined. 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 disk group into this one.
CREATE DISKGROUP disk_group_1 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;
Disk groups can be deleted using the DROP DISKGROUP statement.
DROP DISKGROUP disk_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 disk_group_1 ADD DISK
'/devices/disk*3',
'/devices/disk*4';
-- Drop a disk.
ALTER DISKGROUP disk_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 disk_group_1
RESIZE DISK diska1 SIZE 100G;
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 disk_group_1 ADD TEMPLATE my_template ATTRIBUTES
(MIRROR FINE);
-- Modify template.
ALTER DISKGROUP disk_group_1 ALTER TEMPLATE my_template ATTRIBUTES
(COARSE);
-- Drop template.
ALTER DISKGROUP disk_group_1 DROP TEMPLATE my_template;
Available attributes include:
Directories
A directory heirarchy 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 disk_group_1 ADD DIRECTORY '+disk_group_1/my_dir';
-- Rename a directory.
ALTER DISKGROUP disk_group_1 RENAME DIRECTORY '+disk_group_1/my_dir' TO
'+disk_group_1/my_dir_2';
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 disk_group_1 ADD ALIAS
'+disk_group_1/my_dir/my_file.dbf'
FOR '+disk_group_1/mydb/datafile/my_ts.342.3';
-- Rename an alias.
ALTER DISKGROUP disk_group_1 RENAME ALIAS
'+disk_group_1/my_dir/my_file.dbf'
TO '+disk_group_1/my_dir/my_file2.dbf';
-- Delete an alias.
ALTER DISKGROUP disk_group_1 DELETE ALIAS
'+disk_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 disk_group_1 DROP FILE
'+disk_group_1/my_dir/my_file.dbf';
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 disk_group_1 CHECK FILE
'+disk_group_1/my_dir/my_file.dbf'
ASM Views
The ASM configuration can be viewed using the V$ASM_% views, which often contain different
information depending on whether they are queried from the ASM instance, or a dependant
database instance.
ASM Filenames
There are several ways to reference ASM file. Some forms are used during creation and some for
referencing ASM files. The forms for file creation are incomplete, relying on ASM to create the
fully qualified name, which can be retrieved from the supporting views. The forms of the ASM
filenames are summarised below.
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 disk group.
CREATE TABLESPACE my_ts DATAFILE '+disk_group_1' SIZE 100M AUTOEXTEND
ON;
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.
• Restore the controlfile into the new location from the old location.
• Create new redo logs in ASM and delete the old ones.