Table of Contents
Current status and quick overview
- Step 1: dismount the DG TEST
- Step 2: Validate rename DG operation by running remamedg command with check options ( non destructive ) : verbose=true check=true
- Step 3: Change DG name without check options : verbose=true –
- Step 4: mount the new DG TEST2
- Step 5: Cleanup OCR and delete old DG TEST
Note renaming a DG with CW related files ( voting disks, OCR ) needs additional steps ( For details see Book: The Essential Guide to Oracle Automatic Storage Management - Chapater 13 ) Current status $ crs | egrep 'TARGET|TEST' NAME TARGET STATE SERVER STATE_DETAILS ora.TEST.dg ONLINE ONLINE grac41 ora.TEST.dg ONLINE ONLINE grac42 ora.TEST.dg ONLINE ONLINE grac43 [grid@grac41 ~]$ asmcmd lsdg test State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST/ [grid@grac41 ~]$ asmcmd lsdsk -k Total_MB Free_MB OS_MB Name Failgroup Failgroup_Type Library Label UDID Product Redund Path 1023 873 1023 TEST_0000 TEST_0000 REGULAR System UNKNOWN /dev/asm_test_1G_disk1 1023 873 1023 TEST_0001 TEST_0001 REGULAR System UNKNOWN /dev/asm_test_1G_disk2 --> DG TEST hs 2 disks and is mounted on all cluster nodes
Dismount DG test
[grid@grac41 ~]$ sqlplus / as sysasm SQL> alter diskgroup test dismount; alter diskgroup test dismount ERROR at line 1: ORA-15032: not all alterations performed ORA-15027: active use of diskgroup "TEST" precludes its dismount SQL> alter diskgroup test dismount force; Diskgroup altered.
Run renamedg with check option to validate the RENAME DG operation
[grid@grac41 ~]$ renamedg dgname=test newdgname=test_new verbose=true check=true asm_disksting='/dev/asm*' Parsing parameters.. KFNDG-00201: file not found KFNDG-00201: invalid arguments Cause: Invalid key or value was specified for renamedg. Action: Try renamedg -help for more information. --> Wrong parameter: Change asm_disksting to asm_diskstring [grid@grac41 ~]$ renamedg dgname=test newdgname=test_new verbose=true check=true asm_diskstring='/dev/asm*' .. KFNDG-00405: specified disk group string appears to be mounted Cause: Disk group was mounted. Action: Unmount the disk group and retry renamedg. [grid@grac41 ~]$ asmcmd lsdg test -g Inst_ID State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name 3 MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST/ 2 MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST/ --> DG test still mounted on 2 RAC instances Either use asmca with option dismount DG on all nodes or run alter diskgroup test dismount force on the remaining nodes [grid@grac41 ~]$ asmcmd lsdg test -g ASMCMD-8001: diskgroup 'test' does not exist or is not mounted [grid@grac41 ~]$ renamedg dgname=test newdgname=test_new verbose=true check=true asm_diskstring='/dev/asm*' Parsing parameters.. Parameters in effect: Old DG name : TEST New DG name : TEST_NEW Phases : Phase 1 Phase 2 Discovery str : /dev/asm* Check : TRUE Clean : TRUE Raw only : TRUE renamedg operation: dgname=test newdgname=test_new verbose=true check=true asm_diskstring=/dev/asm* Executing phase 1 Discovering the group Performing discovery with string:/dev/asm* Identified disk UFS:/dev/asm_test_1G_disk2 with disk number:1 and timestamp (33004974 -2144396288) Identified disk UFS:/dev/asm_test_1G_disk1 with disk number:0 and timestamp (33004974 -2144396288) Checking for hearbeat... Re-discovering the group Performing discovery with string:/dev/asm* Identified disk UFS:/dev/asm_test_1G_disk2 with disk number:1 and timestamp (33004974 -2144396288) Identified disk UFS:/dev/asm_test_1G_disk1 with disk number:0 and timestamp (33004974 -2144396288) Checking if the diskgroup is mounted or used by CSS Checking disk number:1 Checking disk number:0 Generating configuration file.. Completed phase 1 Executing phase 2 Looking for /dev/asm_test_1G_disk2 Leaving the header unchanged Looking for /dev/asm_test_1G_disk1 Leaving the header unchanged Completed phase 2 Terminating kgfd context 0x7f6f0781a0a0
Run renamedg without check option to RENAME DG from TEST to TEST_NEW
[grid@grac41 ~]$ renamedg dgname=test newdgname=test_new verbose=true asm_diskstring='/dev/asm*' Parsing parameters.. Parameters in effect: Old DG name : TEST New DG name : TEST_NEW Phases : Phase 1 Phase 2 Discovery str : /dev/asm* Clean : TRUE Raw only : TRUE renamedg operation: dgname=test newdgname=test_new verbose=true asm_diskstring=/dev/asm* Executing phase 1 Discovering the group Performing discovery with string:/dev/asm* Identified disk UFS:/dev/asm_test_1G_disk2 with disk number:1 and timestamp (33004974 -2144396288) Identified disk UFS:/dev/asm_test_1G_disk1 with disk number:0 and timestamp (33004974 -2144396288) Checking for hearbeat... Re-discovering the group Performing discovery with string:/dev/asm* Identified disk UFS:/dev/asm_test_1G_disk2 with disk number:1 and timestamp (33004974 -2144396288) Identified disk UFS:/dev/asm_test_1G_disk1 with disk number:0 and timestamp (33004974 -2144396288) Checking if the diskgroup is mounted or used by CSS Checking disk number:1 Checking disk number:0 Generating configuration file.. Completed phase 1 Executing phase 2 Looking for /dev/asm_test_1G_disk2 Modifying the header Looking for /dev/asm_test_1G_disk1 Modifying the header Completed phase 2 Terminating kgfd context 0x7ffae14fe0a0 Verify new DG paramter using kfed and mount DG test_new [grid@grac41 ~]$ kfed read /dev/asm_test_1G_disk1 | grep 'name' kfdhdb.dskname: TEST_0000 ; 0x028: length=9 kfdhdb.grpname: TEST_NEW ; 0x048: length=8 kfdhdb.fgname: TEST_0000 ; 0x068: length=9 kfdhdb.capname: ; 0x088: length=0 [grid@grac41 ~]$ kfed read /dev/asm_test_1G_disk2 | grep 'name' kfdhdb.dskname: TEST_0001 ; 0x028: length=9 kfdhdb.grpname: TEST_NEW ; 0x048: length=8 kfdhdb.fgname: TEST_0001 ; 0x068: length=9 kfdhdb.capname: ; 0x088: length=0
Mount renamed DG test_new
SQL> alter diskgroup test_new mount; Diskgroup altered. [grid@grac41 ~]$ asmcmd lsdg -g test_new Inst_ID State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name 1 MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST_NEW/ --> DG test_new mounted on grac41 only - Again use asmca to mount DG test_new on the remaining nodes [grid@grac41 ~]$ asmcmd lsdg -g test_new Inst_ID State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name 1 MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST_NEW/ 2 MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST_NEW/ 3 MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST_NEW/ [grid@grac41 ~]$ asmcmd lsdsk -k Total_MB Free_MB OS_MB Name Failgroup Failgroup_Type Library Label UDID Product Redund Path 1023 873 1023 TEST_0000 TEST_0000 REGULAR System UNKNOWN /dev/asm_test_1G_disk1 1023 873 1023 TEST_0001 TEST_0001 REGULAR System UNKNOWN /dev/asm_test_1G_disk2 --> Note disks are not renamed from TEST_0000 to TEST_NEW_0000 and TEST_0001 to TEST_NEW_0001
Cleanup cluster resources
[grid@grac41 ~]$ crs | egrep 'NAME|TEST' NAME TARGET STATE SERVER STATE_DETAILS ora.TEST.dg OFFLINE OFFLINE grac41 ora.TEST.dg OFFLINE OFFLINE grac42 ora.TEST.dg OFFLINE OFFLINE grac43 ora.TEST_NEW.dg ONLINE ONLINE grac41 ora.TEST_NEW.dg ONLINE ONLINE grac42 ora.TEST_NEW.dg ONLINE ONLINE grac43 --> old DG ora.TEST.dg is OFFLINE but still referenced by CW [grid@grac41 ~]$ srvctl remove diskgroup -g TEST PRCA-1002 : Failed to remove CRS resource ora.TEST.dg for ASM Disk Group TEST PRCR-1028 : Failed to remove resource ora.TEST.dg PRCR-1072 : Failed to unregister resource ora.TEST.dg CRS-0222: Resource 'ora.TEST.dg' has dependency error. [grid@grac41 ~]$ crsctl status resource ora.grac4.db -p | grep -i test START_DEPENDENCIES=hard(ora.DATA.dg,ora.FRA2.dg,ora.TEST.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) pullup(ora.DATA.dg,ora.FRA2.dg,ora.TEST.dg) STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA2.dg,shutdown:ora.TEST.dg) Remove start dependency: [root@grac41 ~]# crsctl modify resource ora.grac4.db -attr "START_DEPENDENCIES='hard(ora.DATA.dg,ora.FRA2.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) pullup(ora.DATA.dg,ora.FRA2.dg)' " [root@grac41 ~]# crsctl status resource ora.grac4.db -p | grep -i test STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA2.dg,shutdown:ora.TEST.dg) --> STOP DEPENDENCIES still there Remove stop dependency: [root@grac41 ~]# crsctl modify resource ora.grac4.db -attr "STOP_DEPENDENCIES='hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA2.dg)' " [root@grac41 ~]# crsctl status resource ora.grac4.db -p | grep -i test --> START and STOP DEPENDENCIES to DG TEST removed $ srvctl remove diskgroup -g TEST [grid@grac41 ~]$ asmcmd lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 4096 1048576 40944 18471 10236 4117 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 40952 31275 0 31275 0 N FRA2/ MOUNTED NORMAL N 512 4096 4194304 6132 4960 2044 1458 0 Y OCR/ MOUNTED NORMAL N 512 4096 1048576 2046 1746 0 873 0 N TEST_NEW/
References
- Book: The Essential Guide to Oracle Automatic Storage Management – Chapater 13 ( from Nitin Vengurlekar / Prasad Bagal – Oracle Press )