“alter database mount clone database“ is a statement that forces all datafiles to be put OFFLINE when mounting the target instance.
You’ll see it’s being used in the background when you run RMAN commands like:
“transport tablespace”
“recover tablespace .. auxiliary destination ..”
“recover table” (12c feature)
In my case, i was trying to recover an 11.2.0.4 dropped table using “Tablespace Point In Time Recovery” by following the MOS note “How to Recover From a DROP / TRUNCATE / DELETE TABLE with RMAN (Doc ID 223543.1)“. The basic steps are:
– create pfile
– restore controlfile
– mount with “alter database mount clone database;”
– restore and recover a subset of the database with an RMAN script similar to:
RMAN> connect target /
run {
allocate channel c1 device type DISK;
set until time "to_date( '13-01-2016 13:50', 'DD-MM-YYYY HH24:MI')";
set newname for datafile 1 to "+RECO";
set newname for datafile 3 to "+RECO";
set newname for datafile 4 to "+RECO";
set newname for datafile 23 to "+RECO";
restore tablespace SYSTEM, UNDOTBS01, UNDOTBS02, TOOLS;
switch datafile all;
sql "alter database datafile 1,3,4,23 online";
recover database skip forever tablespace TEMP,INDX,USERS,etc.;
sql "alter database rename file ''+RECO/xxx/onlinelog/group_1.281.739547347'' to ''+RECO''";
sql "alter database rename file ''+RECO/xxx/onlinelog/group_2.282.739547353'' to ''+RECO''";
sql "alter database rename file ''+RECO/xxx/onlinelog/group_3.283.739547359'' to ''+RECO''";
sql "alter database rename file ''+RECO/xxx/onlinelog/group_4.284.739547365'' to ''+RECO''";
release channel c1;
}
After completing the required steps, recovery raised the following error:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
Of course i got the error when tried to open with resetlogs. After struggling with possible causes, i found an internal support note similar with my issue: “ORA-1547 After Recovery When Database Was Mounted As Clone (Doc ID 252181.1)“. The interesting part was this note was published at Oct 23, 2003 for versions 8.1.7.4 to 9.2.0.4 and the fix was:
Use the following workaround until the bug gets resolved :
Do not mount the database as CLONE as in :
SQL> alter database mount clone database;
but mount is as normal database with :
SQL> alter database mount;
But there’s no bug number stated in the note. Even i thought that mysterious bug must have been fixed many years ago, desperation made me try the workaround with mounting the instance with “alter database mount” and manually taking the required datafiles offline. Suprisingly it worked and i was able to open the database with resetlogs.
As a result, it’s fine for me that RMAN uses “mount clone database” statement internally, however when I’ll do TSPITR again you can be sure that I’ll mount the instance with the way I used to !!