EXERCISE 20-1. IF YOU HAVE REAL RAW DEVICES, SUBSTITUTE THEIR NAMES AC...

6. Confirm that ASM has found the disks with this SQL statement:

select path,os_mb from v$asm_disk;

The illustration shows Steps 3, 4, and 5 executed on a Windows system.

Creating ASM Disk Groups

Disk groups are created by an ASM instance and then used by an RDBMS instance. To

create a disk group, as a minimum, give the group a name and a list of disks that have

been discovered by the ASM disk string and are therefore visible in the V$ASM_DISK view:

SQL> create diskgroup dg1 disk '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf';

If you nominate a disk that is already part of a disk group, the command will fail.

The default level of redundancy provided by ASM is “normal” redundancy, meaning

that each AU is mirrored once. All files will be striped across all the disks for maximum

performance. For normal redundancy, the group must have at least two disks, and the

effective size of the group will be half the total space allocated.

In the preceding example, which continues the Linux four-SCSI-disk example

discussed earlier, the result will be a disk group with an effective size of 144GB (less

a small amount). Every file created in the group will (unless specified otherwise) be

striped and mirrored with RAID 0+1. The stripe size will be selected by ASM according

to the type of file: online redo log files and controlfile copies will be fine striped;

datafiles and archive logs will be coarse striped.

To override the default NORMAL redundancy, meaning single mirror, add the

P AR T III

keywords HIGH REDUNDANCY or EXTERNAL REDUNDANCY to the CREATE

DISKGROUP command. HIGH REDUNDANCY will create three copies of every

allocation unit (and therefore requires a minimum of three disks), and EXTERNAL

REDUNDANCY will not mirror at all: the assumption is that there is an underlying

LVM that is doing whatever level of RAID is deemed appropriate.

Redundancy can be taken a step further by putting ASM disks within a disk group

into failure groups. When ASM mirrors extents, it will never mirror an extent to another

disk in the same failure group. This means that you are better protected against the

failure of multiple disks. By default, each disk is considered to be its own failure group;

this gives ASM complete freedom to mirror that disk’s data onto any other disk in the

group. However, if some disks are connected at the hardware level, typically by being

attached to the same controller, you would not want ASM to mirror between them.

Using failure groups forces ASM to create mirrors on a different subset of the disks

within the group. An example of this is

SQL> create diskgroup dgroupa normal redundancyfailgroup controller2 disk '/dev/rdsk/c2*'failgroup controller3 disk '/dev/rdsk/c3*';

This command creates a disk group consisting of all the disk devices matched by

the wildcards given, which is all the disks hanging off the second and third controllers.

But the use of failure groups (their names are not significant) instructs ASM never to

mirror data between two disks that are on the same controller.