Online Disk/Storage Migration With ASM EXTERNAL REDUNDANCY
*************************************************************************
When we think to migrate the SAN storage or removing the old disk from ASM diskgroup with new disk having ASM EXTERNAL redundancy. The first question comes in mind,
Hey boss!! This is an external redundancy (striping but no mirroring) than how can we migrate the storage without backup and downtime.
Look the below for SOLUTION
Steps implemented and tested on test environment::
***************************************
1.) Check the staus for ASM diskgroups and verify them as well.
The GROUP_NUMBER 2 shows the diskgroup mounted as EXTENRAL redundancy with one disk i.e. /dev/oracleasm/disks/DATA1
SQL>select GROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB,FREE_MB from v$asm_diskgroup
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB
------------ ------------------------------ ----------- ------ ---------- ----------
1 DATA MOUNTED NORMAL 36852 35812
2 EXT MOUNTED EXTERN 4228 2045
SQL> select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,REDUNDANCY,FAILGROUP,PATH from v$asm_disk;
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE REDUNDA FAILGROUP PATH
----------- ------- ------------ ------- -------- ------- ------------------------------ ----------------------------------------
0 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0000 /dev/oracleasm/disks/DATA1
2 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0002 /dev/oracleasm/disks/DISK3
1 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0001 /dev/oracleasm/disks/DISK2
0 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0000 /dev/oracleasm/disks/DISK1
2.) Database and ASM instances are up and datafiles are available in +EXT (external redundancy) diskgroup.
SQL> select name from v$datafile;
NAME
---------------------------------------------
+EXT/orcl/datafile/system.256.826385807
+EXT/orcl/datafile/sysaux.257.826385813
+EXT/orcl/datafile/undotbs1.258.826385815
+EXT/orcl/datafile/users.259.826385815
+EXT/orcl/datafile/example.264.826386455
+EXT/orcl/datafile/undotbs2.265.826387857
3.) Add New disk to EXT diskgroup (status --> PROVISIONED) i.e./dev/oracleasm/disks/TEST
SQL> select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,REDUNDANCY,FAILGROUP,PATH from v$asm_disk
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE REDUNDA FAILGROUP PATH
----------- ------- ------------ ------- -------- ------- ------------------------------ ----------------------------------------
0 CLOSED PROVISIONED ONLINE NORMAL UNKNOWN /dev/oracleasm/disks/TEST
0 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0000 /dev/oracleasm/disks/DATA1
2 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0002 /dev/oracleasm/disks/DISK3
1 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0001 /dev/oracleasm/disks/DISK2
0 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0000 /dev/oracleasm/disks/DISK1
SQL> alter diskgroup ext add disk '/dev/oracleasm/disks/TEST' rebalance power 10;
Diskgroup altered.
SQL> select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,REDUNDANCY,FAILGROUP,PATH from v$asm_disk;
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE REDUNDA FAILGROUP PATH
----------- ------- ------------ ------- -------- ------- ------------------------------ ----------------------------------------
0 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0000 /dev/oracleasm/disks/DATA1
2 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0002 /dev/oracleasm/disks/DISK3
1 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0001 /dev/oracleasm/disks/DISK2
0 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0000 /dev/oracleasm/disks/DISK1
1 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0001 /dev/oracleasm/disks/TEST
4.) Check the rebalance is finished successfully from v$asm_operation. The result from the below query should be "now rows selected".
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- -----------
2 REBAL RUN 10 10 414 1100 351 1
SQL> /
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------
2 REBAL RUN 10 10 1093 1099 494 0
SQL> /
no rows selected
SQL>
5.) Verify the datafiles are still available into EXT diskgroup.
SQL> select name from v$datafile;
NAME
-----------------------------------------------
+EXT/orcl/datafile/system.256.826385807
+EXT/orcl/datafile/sysaux.257.826385813
+EXT/orcl/datafile/undotbs1.258.826385815
+EXT/orcl/datafile/users.259.826385815
+EXT/orcl/datafile/example.264.826386455
+EXT/orcl/datafile/undotbs2.265.826387857
6 rows selected.
6.) check the database instances are connected to ASM --> (no impact)
SQL> select * from v$asm_client
GROUP_NUMBER INSTANCE_N DB_NAME STATUS SOFTWARE_VERSION COMPATIBLE_VERSION
------------ ---------- -------- ------------ ------------------ ------------------
1 +ASM1 +ASM CONNECTED 11.2.0.3.0 11.2.0.3.0
2 orcl1 orcl CONNECTED 11.2.0.3.0 11.2.0.0.0
7.) Check the cluster or HAS services are up and running.
[grid@RAC01 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.EXT.dg
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.LISTENER.lsnr
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.asm
ONLINE ONLINE rac01 Started
ONLINE ONLINE rac02 Started
ora.gsd
OFFLINE OFFLINE rac01
OFFLINE OFFLINE rac02
ora.net1.network
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.ons
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.registry.acfs
ONLINE OFFLINE rac01
ONLINE OFFLINE rac02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac01
ora.cvu
1 ONLINE ONLINE rac01
ora.oc4j
1 ONLINE ONLINE rac01
ora.orcl.db
1 ONLINE ONLINE rac01 Open
2 ONLINE ONLINE rac02 Open
ora.rac01.vip
1 ONLINE ONLINE rac01
ora.rac02.vip
1 ONLINE ONLINE rac02
ora.scan1.vip
1 ONLINE ONLINE rac01
[grid@RAC01 ~]$
Now, Drop the old disk from EXT diskgroup.
**********************************************
1.) Drop the disk which is no more required or the disk which are going to removed.
SQL> alter diskgroup ext drop disk EXT_0000 rebalance power 5;
Diskgroup altered.
2.) Check the disk status
SQL> select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,REDUNDANCY,FAILGROUP,PATH from v$asm_disk;
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE REDUNDA FAILGROUP PATH
----------- ------- ------------ ------- -------- ------- ------------------------------ ----------------------------------------
0 CACHED MEMBER ONLINE DROPPING UNKNOWN EXT_0000 /dev/oracleasm/disks/DATA1
2 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0002 /dev/oracleasm/disks/DISK3
1 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0001 /dev/oracleasm/disks/DISK2
0 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0000 /dev/oracleasm/disks/DISK1
1 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0001 /dev/oracleasm/disks/TEST
3.) Check the rebalance operation finished "no rows selected".
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
2 REBAL RUN 5 5 172 1110 386 2
SQL> /
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
2 REBAL RUN 5 5 979 1101 451 0
SQL>
SQL> /
no rows selected
4.) Check the status of dropped disk. The disk are in close state now and can be well removed from the OS level or using ASMLIB as below.
SQL> select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,REDUNDANCY,FAILGROUP,PATH from v$asm_disk
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE REDUNDA FAILGROUP PATH
----------- ------- ------------ ------- -------- ------- ------------------------------ ----------------------------------------
0 CLOSED FORMER ONLINE NORMAL UNKNOWN /dev/oracleasm/disks/DATA1
2 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0002 /dev/oracleasm/disks/DISK3
1 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0001 /dev/oracleasm/disks/DISK2
0 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0000 /dev/oracleasm/disks/DISK1
1 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0001 /dev/oracleasm/disks/TEST
[root@RAC02 ~]# oracleasm deletedisk data1
Clearing disk header: done
Dropping disk: done
SQL> select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,REDUNDANCY,FAILGROUP,PATH from v$asm_disk
DISK_NUMBER MOUNT_S HEADER_STATU MODE_ST STATE REDUNDA FAILGROUP PATH
----------- ------- ------------ ------- -------- ------- ------------------------------ ----------------------------------------
2 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0002 /dev/oracleasm/disks/DISK3
1 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0001 /dev/oracleasm/disks/DISK2
0 CACHED MEMBER ONLINE NORMAL UNKNOWN DATA_0000 /dev/oracleasm/disks/DISK1
1 CACHED MEMBER ONLINE NORMAL UNKNOWN EXT_0001 /dev/oracleasm/disks/TEST
verification, after removing the disk from diskgroup and Operating System
*************************************************************************
1.) Verified the diskgroup status or state.
SQL> select NAME,STATE,TYPE,TOTAL_MB,FREE_MB from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB
------------------------------ ----------- ------ ---------- ----------
DATA MOUNTED NORMAL 36852 35812
EXT MOUNTED EXTERN 4228 2035
2.) Verified database datafiles status. (no impact)
SQL> select name from v$datafile
NAME
--------------------------------------------------------------------------------
+EXT/orcl/datafile/system.256.826385807
+EXT/orcl/datafile/sysaux.257.826385813
+EXT/orcl/datafile/undotbs1.258.826385815
+EXT/orcl/datafile/users.259.826385815
+EXT/orcl/datafile/example.264.826386455
+EXT/orcl/datafile/undotbs2.265.826387857
6 rows selected.
3.) More verification test by rebooting the database instances.
[oracle@RAC02 ~]$ srvctl stop database -d orcl
[oracle@RAC02 ~]$ srvctl start database -d orcl
[oracle@RAC02 ~]$
4.) Test after the instances are up the datafiles status are available.( to make sure everything is ok and diskgroup mounted as expected)
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+EXT/orcl/datafile/system.256.826385807
+EXT/orcl/datafile/sysaux.257.826385813
+EXT/orcl/datafile/undotbs1.258.826385815
+EXT/orcl/datafile/users.259.826385815
+EXT/orcl/datafile/example.264.826386455
+EXT/orcl/datafile/undotbs2.265.826387857
5.) All the database instances are connected to the ASM instance.
GROUP_NUMBER INSTANCE_N DB_NAME STATUS SOFTWARE_VERSION COMPATIBLE_VERSION
------------ ---------- -------- ------------ ----------------- ----------------------
1 +ASM1 +ASM CONNECTED 11.2.0.3.0 11.2.0.3.0
2 orcl1 orcl CONNECTED 11.2.0.3.0 11.2.0.0.0
6.) Verified the cluster services status as well after rebooting the nodes itself.
[grid@RAC01 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.EXT.dg
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.LISTENER.lsnr
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.asm
ONLINE ONLINE rac01 Started
ONLINE ONLINE rac02 Started
ora.gsd
OFFLINE OFFLINE rac01
OFFLINE OFFLINE rac02
ora.net1.network
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.ons
ONLINE ONLINE rac01
ONLINE ONLINE rac02
ora.registry.acfs
ONLINE OFFLINE rac01
ONLINE OFFLINE rac02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac01
ora.cvu
1 ONLINE ONLINE rac01
ora.oc4j
1 ONLINE ONLINE rac01
ora.orcl.db
1 ONLINE ONLINE rac01 Open
2 ONLINE ONLINE rac02 Open
ora.rac01.vip
1 ONLINE ONLINE rac01
ora.rac02.vip
1 ONLINE ONLINE rac02
ora.scan1.vip
1 ONLINE ONLINE rac01
[grid@RAC01 ~]$
**********************************************************************************
Note:-> The rebalance operation will have an impact on performance and the advised is not to run any rebalance operation during peak hours until hardly required.
The above demo, will clearly shows that, We can migrate or add / remove the ASM disks from diskgroups even the redundancy level is EXTERNAL.
************************************END*******************************************
Thanks for posting this article, as we are struggling to do the same and it really helps me. Thank you very much.
ReplyDeleteRegards,
Praveen.