I got ” RMAN-06571: datafile 1 does not have recoverable copy ” error in Oracle database during restore database.
RMAN-06571: datafile 1 does not have recoverable copy
Details of error are as follows.
RMAN> switch database to copy;
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of switch to copy command at 12/10/2020 14:23:30 RMAN-06571: datafile 1 does not have recoverable copy RMAN>
List Incarnation & Reset Incarnation
The RMAN-06571 error is related with the Incarnation of database.
RMAN> list incarnation; using target database control file instead of recovery catalog List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 MSDB 2054866743 PARENT 1 31-MAY-18 2 2 MSDB 2054866743 CURRENT 16874766827308 26-NOV-20
To solve this error, Reset database to right incarnation as follows.
RMAN> reset database to incarnation 1; database reset to incarnation 1 RMAN> list incarnation; List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 MSDB 2054866743 CURRENT 1 31-MAY-18 2 2 MSDB 2054866743 ORPHAN 16874766827308 26-NOV-20 RMAN>
The other scenario is as follows.
RMAN> RECOVER DATABASE NOREDO; Starting recover at 18 JUL 2011 18:12:10 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=267 devtype=DISK RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 07/18/2011 18:12:11 RMAN-06094: datafile 1 must be restored
Often the datafiles do actually reside on disk in either a different directory or filename. So you just need to tell RMAN where they are.
1) If the datafiles are all in the same directory path, you can catalog them all with one command:
RMAN> catalog start with 'full pathname';
Otherwise, to catalog an individual datafile:
RMAN> catalog datafilecopy 'full path filename';
2) Confirm that RMAN knows about the newly cataloged datafile copies:
RMAN> list copy of database; RMAN> list copy of datafile n; eg. RMAN> list copy of datafile 1; OR to list multiple copies: RMAN> list copy of datafile 1,2,3,4;
3) Rename the datafiles to the correct copy on disk
a) If all datafiles needs to be renamed:
RMAN> switch database to copy;
b) If only renaming a single datafile:
RMAN> switch datafile n to copy; eg. RMAN> switch datafile 1 to copy;
c) If renaming a list of files:
RMAN> switch datafile n,o,p,q to copy; eg. RMAN> switch datafile 1,2,3,4 to copy;
d) to rename to a specific copy:
RMAN> run {
switch datafile 'old datafile path and name' to datafilecopy 'new datafile path and name';
}
4) The controlfile should now reflect the real datafiles on disk, with their correct size and names.
RMAN> report schema; File Size(MB) Tablespace RB segs Datafile Name ---- -------- ----------------- ------- ------------------------ 1 500 SYSTEM *** <ASM PATH>/system.423.756840583 2 200 UNDOTBS1 *** <ASM PATH>/undotbs1.258.667475049 3 350 SYSAUX *** <ASM PATH>/sysaux.257.756996199 4 545 USERS *** <ASM PATH>/users.259.756996261
Do you want to learn Oracle Database for Beginners, then Click and read the following articles.
Oracle Database Tutorials for Beginners ( Junior Oracle DBA )