online ASM disk migration with External Redudancy


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*******************************************

No comments:

Post a Comment