TASK
This task is to relocate all the datafiles of diskgroup DATA1 to another diskgroup DATA2 for a standby database.
SOULUTION
1)Check the diskgroup space availability.
SQL> set pagesize 120
SQL> set linesize 180
SQL> select NAME,TOTAL_MB/1024,FREE_MB/1024,USABLE_FILE_MB/1024
from v$asm_diskgroup;
NAME T TOTAL_MB/1024 FREE_MB/1024 USABLE_FILE_MB/1024
--------- ------------- ------------ -------------------
DATA1 1024.00977 15.6894531 15.6894531
OCR_VOTE 19.9931641 15.4257813 15.4257813
FRA 500.069336 210.331055 210.331055
DATA2 4000.55469 1816.02344 1816.02344
2)Leave managed standby database recovery still going. Create a RMAN script by using below query:
SQL> select 'backup as copy datafile '||file#||' format ''+DATA2'';'
from v$datafile
where name like '+DATA1%' order by 1;
'BACKUPASCOPYDATAFILE'||FILE#||'FORMAT''+DATA2'';'
---------------------------------------------------
backup as copy datafile 124 format '+DATA2';
backup as copy datafile 125 format '+DATA2';
backup as copy datafile 126 format '+DATA2';
backup as copy datafile 127 format '+DATA2';
.....
....
...
..
.
The final RMAN script content:
$cat move_DATA1_to_DATA2.rman
run {
allocate channel stdbych1 type disk;
allocate channel stdbych2 type disk;
allocate channel stdbych3 type disk;
allocate channel stdbych4 type disk;
backup as copy datafile 124 format '+DATA2';
backup as copy datafile 125 format '+DATA2';
backup as copy datafile 126 format '+DATA2';
backup as copy datafile 127 format '+DATA2';
....
...
..
.
}
3) Run the RMAN script to make a copy of all datafiles on diskgroup DATA1 onto diskgroup DATA2.
$nohup rman target / cmdfile=/u01/app/oracle/admin/scripts/move_DATA1_to_DATA2.rman log=/u01/app/oracle/admin/scripts/move_DATA1_To_DATA2.log &
4) Stop the managed standby database recovery.
SQL> alter database recover managed standby database cancel; Database altered.
5) Switch the datafiles.
RMAN>switch datafile 124 to copy; RMAN>switch datafile 125 to copy; RMAN>switch datafile 126 to copy; RMAN>switch datafile 127 to copy; .... ... .. .
6) Start the recovery.
SQL> alter database recover managed standby database using current logfile disconnect from session; Database altered.
5) Archive log switch, check applied from alert.log, etc.
SQL>alter system archive log current ; System altered.
6) Unmount diskgroup DATA1 on all the nodes, except the current node.
SQL> alter diskgroup data1 dismount; Diskgroup altered.
7) Drop the diskgroup DATA1.
SQL> drop diskgroup data1; drop diskgroup data1 * ERROR at line 1: ORA-15039: diskgroup not dropped ORA-15053: diskgroup "DATA1" contains existing files SQL> drop diskgroup data1 including contents; Diskgroup dropped.
8) Scan disks and confirm the ASM Disks of DATA1 have been removed from ASM disks.
$su - # oracleasm listdisks ASM_DISK01 ASM_DISK02 ASM_DISK03 ASM_DISK04 ASM_DISK05 ASM_DISK06 ASM_DISK07 ASM_DISK08 ASM_FRA01 ASM_SSD1 <----- DATA1 diskgroup OCR_VOTE01 # oracleasm scandisks Reloading disk partitions: done Cleaning any stale ASM disks... Cleaning disk "ASM_SSD1" Scanning system for ASM disks... # oracleasm listdisks ASM_DISK01 ASM_DISK02 ASM_DISK03 ASM_DISK04 ASM_DISK05 ASM_DISK06 ASM_DISK07 ASM_DISK08 ASM_FRA01 OCR_VOTE01