Adding a Disk to existing ASM disk group:
Before proceeding with the below steps, capture the ASM current utilization details by using the below query.
SELECT NAME, TOTAL_MB/1024 total_gb, FREE_MB/1024 free_gb, ROUND((1- (FREE_MB / TOTAL_MB))*100, 2) "percentage used" FROM v$asm_diskgroup order by 4 desc
/
NAME TOTAL_GB FREE_GB percentage used
------------------------------ ---------- ---------- ---------------
DATA 8388.75781 146.347656 98.26
INDX 4144.38281 78.4140625 98.11
OCR 24.9414063 10.640625 57.34
REDO 24.9414063 22.578125 9.48
OCRMIRROR 24.9414063 23.9101563 4.13
FRA 299.429688 291.511719 2.64
------------------------------ ---------- ---------- ---------------
DATA 8388.75781 146.347656 98.26
INDX 4144.38281 78.4140625 98.11
OCR 24.9414063 10.640625 57.34
REDO 24.9414063 22.578125 9.48
OCRMIRROR 24.9414063 23.9101563 4.13
FRA 299.429688 291.511719 2.64
Step 1: Check whether any asm operation is running in the background:
SQL> SELECT GROUP_NUMBER, PASS, STATE FROM V$ASM_OPERATION;
no rows selected
Step 2: Check the new disk allocated status , new disk will show as candidate.
set lines 999;
col diskgroup for a15
col diskname for a15
col path for a35
select a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
order by b.group_number,b.name;
DISKGROUP DISKNAME TOTAL_MB USED_MB FREE_MB PATH HEADER_STATU
--------------- -------------- ---------- ---------- ---------- ----------------------------------- ------------
0 0 0 /dev/rdsk/idx23 CANDIDATE
DATA DATA_0000 204760 201268 3492 /dev/rdsk/data1 MEMBER
DATA DATA_0001 102128 100388 1740 /dev/rdsk/data2 MEMBER
DATA DATA_0002 204528 201016 3512 /dev/rdsk/data3 MEMBER
DATA DATA_0003 204528 201024 3504 /dev/rdsk/data4 MEMBER
DATA DATA_0004 204528 201036 3492 /dev/rdsk/data5 MEMBER
DATA DATA_0005 204528 201020 3508 /dev/rdsk/data6 MEMBER
DATA DATA_0006 204528 201032 3496 /dev/rdsk/data7 MEMBER
DATA DATA_0007 204528 201040 3488 /dev/rdsk/data8 MEMBER
DATA DATA_0008 204528 201028 3500 /dev/rdsk/data9 MEMBER
DATA DATA_0009 204528 201016 3512 /dev/rdsk/data10 MEMBER
Step 3: Collect the disk path details from the above step in which the header status shows as candidate.
SQL> alter diskgroup INDX add disk '/dev/rdsk/idx23';
Step 4: Check the Rebalance Status
Monitor the rebalance operation to ensure it completes successfully, its completed once the below query returns no values.
SQL> SELECT * FROM V$ASM_OPERATION;
no rows selected
Step 5: Validate the ASM size post adding the disk:
Once this is done again check the asm current utilization details.
SELECT NAME, TOTAL_MB/1024 total_gb, FREE_MB/1024 free_gb, ROUND((1- (FREE_MB / TOTAL_MB))*100, 2) "percentage used" FROM v$asm_diskgroup order by 4 desc
/
NAME TOTAL_GB FREE_GB percentage used
------------------------------ ---------- ---------- ---------------
DATA 8388.75781 146.347656 98.26
INDX 4244.11719 178.136719 95.8
OCR 24.9414063 10.640625 57.34
REDO 24.9414063 22.578125 9.48
OCRMIRROR 24.9414063 23.9101563 4.13
FRA 299.429688 291.242188 2.73
Thank you for providing such a comprehensive and insightful explanation of adding disk to existing ASM. Your blog post was extremely helpful in resolving production issue.
ReplyDeleteThanks Noel !!
Delete