Thursday, October 23, 2008

ASM

Overview of Automatic Storage Management (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 extention 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 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.

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 and 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.

Create ASM in PC or Laptop

ASM can be implemented without having expensive additional disks/logical volumes/partition for testing purpose on your laptop/desktop.

All you need is a free space on your hard disk to store your database.

It's much intresting to do in practice than to describe in theory, so let's begin!

1) Creating a dummy disks

In 10gR2 installation, Oracle ships an executable called asmtool, and it can be used to create 'solid' files -solid in the sense that they are filled with zeros, as opposed to being full of empty space. These are the sorts of files ASM demands if it is to treat them as hard disks. The utility is found in the ORACLE_HOME\bin.

E:\>mkdir asmdisks

E:\>cd asmdisks

E:\asmdisks>asmtool -create E:\asmdisks\disk1 1024

E:\asmdisks>asmtool -create E:\asmdisks\disk2 1024

E:\asmdisks>asmtool -create E:\asmdisks\disk3 1024

Now you have 3 disks(dummy) of 1 GB each which can be used to create a ASM disk group.


2) Create ASM instance

a) Configure Cluster Synchronization Servie

Before you can create an ASM instance on 10g Release 2, though, you must first run a script which instantiates the Oracle Cluster Registry and its associated processes & services. That's done by issuing the command:

E:\>E:\oracle\product\10.2.0\db_1\BIN\localconfig reset

Step 1: stopping local CSS stack
Step 2: deleting OCR repository
Step 3: creating new OCR repository
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'ap\arogyaa', privgrp ''..
Operation successful.
Step 4: creating new CSS service
successfully created local CSS service
successfully reset location of CSS setup

b) Create Init pfile

Open notepad edit the following parameters and save file as "E:\oracle\product\10.2.0\db_1\database\init+ASM.ora"

INSTANCE_TYPE=ASM
DB_UNIQUE_NAME=+ASM
LARGE_POOL_SIZE=8M
ASM_DISKSTRING='E:\asmdisks\*'
_ASM_ALLOW_ONLY_RAW_DISKS=FALSE


c) Create service and password file

oradim will create an ASM instance and start it automatically.

E:\> orapwd file=E:\oracle\product\10.2.0\db_1\database\PWD+ASM.ora password=asm
E:\> oradim -NEW -ASMSID +ASM -STARTMODE auto


3) Create ASM disk group

a) Create asm disk group
SQL> select path, mount_status from v$asm_disk;

PATH MOUNT_S
--------------------------------
E:\ASMDISKS\DISK1 CLOSED

E:\ASMDISKS\DISK3 CLOSED

E:\ASMDISKS\DISK2 CLOSED


SQL> create diskgroup data external redundancy disk
2 'E:\ASMDISKS\DISK1',
3 'E:\ASMDISKS\DISK2',
4* 'E:\ASMDISKS\DISK3';

Diskgroup created.

b) Change PFILE to SPFILE, Add ASM Diskgroup parameter and your all set to go and use ASM.

SQL> create spfile from pfile;
SQL> startup force;
SQL> alter system set asm_diskgroups=data scope=spfile;
SQL> startup force;

SQL> startup force
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1247420 bytes
Variable Size 57472836 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
SQL>

Now you can go ahead and use your DBCA and create a database and on step 6 of 13, you can use Automatic Storage management as your Filesystem.

No comments: