RMAN Database Restore ASM

RMAN Database Restore ASM

Introduction

In this article, we will see how to restore a full database from an ASM RAC database  to a non-RAC database having Oracle restart the standalone grid infrastructure (RMAN database restore ASM).

And we assume that there is a tape backup that needs to be restored to the target non-RAC database having ASM disk storage.

Below are all the steps to restore oracle database:

Step 1: Connect to the database

Oracle@wbuatdr1:~$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 12 09:19:20 2023

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

Step 2: Shutdown the database

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

3: Start up mount from pfile with restrict mode

SQL> startup mount restrict pfile='/export/home/oracle/pfile.ora';
ORACLE instance started.

Total System Global Area 4.2950E+10 bytes
Fixed Size                  5284640 bytes
Variable Size            6308240608 bytes
Database Buffers         3.6507E+10 bytes
Redo Buffers              128925696 bytes
Database mounted

4 : Drop the database

SQL> drop database;

Database dropped.

Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

5: Check ASM disk space availability

oracle@wbuatdr1:~$ su - grid
Password:
Oracle Corporation      SunOS 5.11      11.3    September 2015
grid@wbuatdr1:~$ asmcmd
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  EXTERN  N         512   4096  8388608   5631824  5626936                0         5626936              0             Y  DATA/
MOUNTED  EXTERN  N         512   4096  1048576    511991   436067                0          436067              0             N  FRA/
MOUNTED  EXTERN  N         512   4096  1048576     30711    30651                0           30651              0             N  REDO1/
MOUNTED  EXTERN  N         512   4096  1048576     30711    30651                0           30651              0             N  REDO2/

6: Delete Existing archive logs and auto backup from ASM disk, if any

ASMCMD> cd FRA/
ASMCMD> ls
PRODDB/
ASMCMD> cd PRODDB/ ARCHIVELOG/
2023_03_14/
2023_03_31/
2023_04_10/
ASMCMD> rm –rf  2023_03_14/  2023_03_31/    2023_04_10/

7: Startup nomount pfile

oracle@wbuatdr1:~$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 12 09:31:21 2023

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to an idle instance.


SQL> startup nomount pfile='/export/home/oracle/pfile.ora';
ORACLE instance started.

Total System Global Area 4.2950E+10 bytes
Fixed Size                  5284640 bytes
Variable Size            6308240608 bytes
Database Buffers         3.6507E+10 bytes
Redo Buffers              128925696 bytes

8: Restore controlfile from backup

oracle@wbuatdr1:~$  rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on Wed Apr 12 14:55:28 2023

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PRODB(DBID=88272031)

RMAN>restore controlfile from '/Backup/Wednesday/29_CTLFILE';
restore controlfile from '/backup/Wednesday/29_CTLFILE';
Starting restore at 12-APR-23
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2836 device type=DISK

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/12/2023 09:34:55
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece

9: Give permission for the above backup directory to fix the above errors.

oracle@wbuatdr1:~$ su - sol
Password:
Warning: 1 failed authentication attempt at Wed Dec 31 03:00 1969 since last successful authentication.
Oracle Corporation      SunOS 5.11      11.3    September 2015
sol@wbuatdr1:~$ su -
Password:
Oracle Corporation      SunOS 5.11      11.3    September 2015

root@wbuatdr1:~# cd /backup/Wednesday
root@wbuatdr1:/backup/Wednesday# chmod 777 *

10: Now run the controlfile restore command

oracle@wbuatdr1:~$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on Wed Apr 12 09:37:51 2023

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PRODDB(not mounted)

RMAN>  restore controlfile from '/backup/29_CTLFILE';

Starting restore at 12-APR-23
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2648 device type=DISK

channel ORA_DISK_1: copied control file copy
output file name=+DATA/PRODDB/CONTROLFILE/current.276.1133948293
Finished restore at 12-APR-23

Recovery Manager complete.

11: Edit the pfile with the restored controlfile and save it.

control_files='+DATA/WFCPROD/CONTROLFILE/current.276.1133948293'
cursor_sharing='FORCE'
db_block_size=8192
db_cache_advice='OFF'
db_create_file_dest='+DATA'
db_domain=''
db_file_name_convert='+DATA'
db_files=500
db_name='wfcprod'
db_recovery_file_dest='+FRA'
db_recovery_file_dest_size=2000G
diagnostic_dest='/u01/app/oracle'

12 : Mount database and backup catalog

RMAN> alter database mount;

using target database control file instead of recovery catalog
Statement processed

RMAN> catalog start with '/backup/Wednesday';
Starting implicit crosscheck backup at 12-APR-23
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2648 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=191 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=381 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=570 device type=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: SID=759 device type=DISK
allocated channel: ORA_DISK_6
channel ORA_DISK_6: SID=948 device type=DISK
allocated channel: ORA_DISK_7
channel ORA_DISK_7: SID=1137 device type=DISK
allocated channel: ORA_DISK_8
channel ORA_DISK_8: SID=1327 device type=DISK
Crosschecked 2012 objects
Finished implicit crosscheck backup at 12-APR-23

Starting implicit crosscheck copy at 12-APR-23
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
using channel ORA_DISK_5
using channel ORA_DISK_6
using channel ORA_DISK_7
using channel ORA_DISK_8
Crosschecked 1966 objects
Finished implicit crosscheck copy at 12-APR-23

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: +FRA/PRODDB/AUTOBACKUP/2022_06_25/n_1108285211.353.1108285217

searching for all files that match the pattern /backup/Wednesday

List of Files Unknown to the Database
=====================================
File Name: /backup/29_FULL_BACKUP_na1o9j97_1_1_1132776743_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n01o9j94_1_1_1132776740_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_nm1o9k5j_1_1_1132777651_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_nf1o9k5f_1_1_1132777647_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_nq1o9k5n_1_1_1132777655_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n71o9j96_1_1_1132776742_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n31o9j95_1_1_1132776741_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_mt1o9j94_1_1_1132776740_20230329

Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /backup/Wednesday/29_FULL_BACKUP_na1o9j97_1_1_1132776743_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n01o9j94_1_1_1132776740_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_na1o9j97_1_1_1132776743_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n01o9j94_1_1_1132776740_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_nm1o9k5j_1_1_1132777651_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_nf1o9k5f_1_1_1132777647_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_nq1o9k5n_1_1_1132777655_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n71o9j96_1_1_1132776742_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_n31o9j95_1_1_1132776741_20230329
File Name: /backup/Wednesday/29_FULL_BACKUP_mt1o9j94_1_1_1132776740_20230329

12: Crosscheck backup, delete expired backup, crosscheck archivelog

RMAN> crosscheck backup;
RMAN> delete expired backup;
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;

13: Restore database

We can restore the database either using the ‘restore database’ command or using the restore shell script:

RMAN> restore database;

OR use restore shell script(restore.sh) and the restore.sh file contains the following lines of code:

export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1/
export ORACLE_SID=UATDB /u01/app/oracle/product/12.1.0/dbhome_1/bin/rman@'/export/home/oracle/restore.cmd;’

And the restore.cmd contains the following lines of code:

connect target / 
run { 
restore database;
 }

And finally we run restore.sh script command:

[oracle@wbuatdr1~] nohup ./restore.sh &

14: Recover database

RMAN > recover database;

 Starting recover at 12-APR-23
 using channel ORA_DISK_1 
 using channel ORA_DISK_2 
 using channel ORA_DISK_3 
 using channel ORA_DISK_4 
 using channel ORA_DISK_5 
 using channel ORA_DISK_6 
 using channel ORA_DISK_7 
 using channel ORA_DISK_8 
 starting media recovery archived log for thread 1 with sequence 4531 is already on disk as file +FRA/WFCPROD/ARCHIVELOG/2022_12_05/thread_1_seq_4531.540.1122626343 
 channel ORA_DISK_1: starting archived log restore to default destination 
 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=4530 
 channel ORA_DISK_1: reading from backup piece /wednesday/22082022/29_FULL_BACKUP_pe1dr1r4_1_1_112181437_22082022 
 channel ORA_DISK_1: piece handle=/Wednesday/22082022/29_FULL_BACKUP_pe1dr1r4_1_1_1121814372_22082022 tag=TAG20221126T230246 
 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:11:55 archived log file name=+FRA/PRODDB/ARCHIVELOG/2022_12_05/thread_1_seq_4530.408.1122626555 thread=1 sequence=4530 channel default: deleting archived log(s) archived log file name=+FRA/PRODDB/ARCHIVELOG/2022_12_07/thread_1_seq_4530.408.1122626555 RECID=127915 STAMP=1122627260 archived log file name=+FRA/UATDB/ARCHIVELOG/2022_12_07/thread_1_seq_4531.540.1122626343 thread=1 sequence=4531 unable to find archived log archived log thread=1 sequence=4532
 RMAN-00571: =========================================================== 
 RMAN-00569: =============== 
 ERROR MESSAGE STACK FOLLOWS =============== 
 RMAN-00571: ===========================================================
 RMAN-03002: failure of recover command at 12/07/2022 08:55:19 
 RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 4532 and starting SCN of 135221823820
 RMAN> alter database open resetlogs; 
 Statement processed 
 RMAN> select status from v$instance;
 STATUS ------------ 
 OPEN 
 RMAN>

15: Create spfile from pfile

oracle@wbuatdr1:~$ sqlplus / as sysdba 
SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 7 16:19:20 2022 Copyright (c) 1982, 2014,
 racle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options

SQL> Create spfile from pfile=’/export/home/oracle/pfile.ora’;
 created.

16: shutdown and start up the database

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down

SQL >  startup ;
ORACLE instance started.

Total System Global Area 4.2950E+10 bytes
Fixed Size                  5284640 bytes
Variable Size            6308240608 bytes
Database Buffers         3.6507E+10 bytes
Redo Buffers              128925696 bytes

Database opened.