1. What init.ora parameters does a user need to configure for ASM instances?

Oracle ASM offers these initialization parameters.  The main parameters for ASM include asm_diskgroups, asm_diskstring, asm_power_limit and asm_preferred_read_failure_groups

instance_type:  This is normally set to instance_type=ASM,  but the default is non-ASM where instance_type= rdbms.

db_unique_name: This is a global unique name for the database that has npounted the ASM diskgroups. The default for db_unique_name is +asm.

asm_power_limit: The asm_power_limit parameter is the maximum power for a rebalancing operation on an ASM instance, with powers ranging from 1 (low) to 11 (high).  The higher the “power”, the faster an ASM rebuild operation will occur.

asm_diskgroups:  The asm_diskgroups parameter will list of disk groups that should be mounted by the ASM instance at startup time, or by the alter diskgroup all mount statement.

asm_diskstring:  The asm_diskstring parameter the maximum number of disks that can be considered during an ASM disk discovery operation.

asm_preferred_read_failure_groups:  This specifies the preferred failure group to use in case of an I/O failure.



2. How does the database interact with the ASM instance and how do I make ASM go faster?

ASM is not in the I/O path so ASM does not impede the database file access. Since the RDBMS instance is performing raw I/O, the I/O is as fast as possible.

The database communicates with ASM instance using the ASMB process. Once the database obtains the necessary extents from extent map, all database IO going  forward is processed through by the database processes, bypassing ASM. Thus ASM is not really in the IO path. So, typically you don’t need to think of making he ASM go faster

Below is the process through which database interacts with ASM Instance

a. Database issues open of a database file
b. ASM sends the extent map for the file to database instance. Starting with 11g, the RDBMS only receives first 60 extents the remaining extents in the extent map are paged in on demand, providing a faster open
c. Database now reads directly from disk
d. RDBMS foreground initiates a create tablespace for example
e. ASM does the allocation for its essentially reserving the allocation units for the file creation
f. Once allocation phase is done, the extent map is sent to the RDBMS
g. The RDBMS initialization phase kicks in. In this phase the initializes all the reserved AUs
h. If file creation is successful, then the RDBMS commits the file creation
Going forward all I/Os are done by the RDBMS.

3. Do I need to define the RDBMS FILESYSTEMIO_OPTIONS parameter when I use ASM?

No, the RDBMS does I/O directly to the raw disk devices, the FILESYSTEMIO_OPTIONS parameter is only for filesystems.

FILESYSTEMIO_OPTIONS controls the behaviour of I/O options given by operating system but it has no affect when ASM is used. FILESYSTEMIO_OPTIONS enables asynchronous I/O (AIO) when the value is set to SETALL/ASYNC. However, ASM bypasses the filesystem layer in this case because ASM I/O is entirely controlled by DISK_ASYNCH_IO parameter. AIO needs to be enabled/disabled by setting disk_asynch_io to parameter values TRUE/FALSE.

4. I read in the ASM Best Practices paper that Oracle recommends two diskgroups. Why?

Oracle recommends two diskgroups to provide a balance of manageability, utilization, and performance.
To reduce the complexity of managing ASM and its diskgroups, Oracle recommends that generally no more than two diskgroups be maintained and managed per RAC cluster or single ASM instance

Database work area : This is where active database files such as datafiles, control files, online redo logs, and change tracking files used in incremental backups are stored. This location is indicated by DB_CREATE_FILE_DEST.
Flash recovery area : Where recovery-related files are created, such as multiplexed copies of the current control file and online redo logs, archived redo logs, backup sets, and flashback log files. This location is indicated by DB-RECOVERY_FILE_DEST.
Having one DATA container means only place to store all your database files, and obviates the need to juggle around datafiles or having to decide where to place a new tablespace.
By having one container for all your files also means better storage utilization. If more storage capacity or IO capacity is needed, just add an ASM disk….all online activities.
You have to ensure that this storage pool container houses enough spindles to accommodate the IO rate of all the database objects
Note however, that additional diskgroups may be added to support tiered storage classes in
Information Lifecycle Management (ILM) or Hierarchical Storage Management (HSM)

5. We have a 16 TB database. I’m curious about the number of disk groups we should use; e.g. 1 large disk group, a couple of disk groups, or otherwise?

For VLDBs you will probably end up with different storage tiers; e.g with some of our large customers they have Tier1 (RAID10 FC), Tier2 (RAID5 FC), Tier3
(SATA), etc. Each one of these is mapped to a diskgroup.
These custs mapped certain tablespaces to specific tiers; eg, system/rollback/sysaux and latency senstive tablespaces in Tier1, and not as IO critical on Tier2, etc.
For 10g VLDBs its best to set an AU size of 16MB, this is more for metadata space efficiency than for performance. The 16MB recommendation is only necessary if the diskgroup is going to be used by 10g databases.
In 11g, Oracle introduced variable size extents to solve the metadata problem. This requires compatible.rdbms & compatible.asm to be set to With 11g you should set your AU size to the largest I/O that you wish to issue for sequential access (other parameters need to be set to increase the I/O size issued by Oracle). For random small I/Os the AU size does not matter very much as long as every file is broken into many more extents than there are


6. We have a new app and don’t know our access pattern, but assuming mostly sequential access, what size would be a good AU fit?

For 11g ASM/RDBMS it is recommended to use 4MB ASM AU for disk groups.
See Metalink Note 810484.1
For all 11g ASM/DB users, it best to create a disk group using 4 MB ASM AU size. Metalink Note 810484.1 covers this