RE: point in time restore of PDB fails with RMAN-06023

  • From: "Mark W. Farnham" <mwf@xxxxxxxx>
  • To: <anthonycsanchez@xxxxxxxxx>, "'oracle-l'" <Oracle-L@xxxxxxxxxxxxx>
  • Date: Sun, 24 May 2020 06:16:03 -0400

Dinosaurs would create the text version of the current controlfile, edit it to 
omit the new files for just that PDB, and then use create controlfile from that 
text. I don’t know if that all works for 18.8. Last time I actually did it was 
before CDB and PDB. Probably 7.1 or 8.1 is the last time I actually did that; I 
really can’t remember.

 

I suppose if you had a test machine you could restore the entire old CDB, 
recover to your point in time, and then unplug the PDB and move that back to 
the other machine. (Unplugging the current PDB on the production machine and 
plugging in the recovered PDB recovered on the test machine.)

 

I haven’t looked to see if there is a recover PDB from backupcontrolfile that 
allows you to point just that recovery operation to an old version of the 
controlfile, which of course you save as a dated, event documented version of 
the controlfile everytime a file is added for any PDB.

 

Good luck. Other than waiting for a fix, those are all the options I can think 
of to try.

 

Oh, and it seems to me the automatic RMAN/CDB/RDBMS combination should handle 
all this before it is released for alpha testing by the pre-beta partners. 
Isn’t recoverability to a point in time a mandatory no bug zone?

 

mwf

 

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On ;
Behalf Of anthony Sanchez
Sent: Saturday, May 23, 2020 4:45 PM
To: oracle-l
Subject: point in time restore of PDB fails with RMAN-06023

 

Hello Folks,

 

Oracle 18.8 - Exadata Cloud@Customer

 

I am trying to do a point in time restore and recovery of a PDB.  

 

The PDB was created on 4/26.

I have all backups up until that point and incarnation did not change.

I am trying to restore to 4/29.

Between 4/29 and now many data files have been added to the PDB.

 

At restore time, RMAN is trying to restore files that did not exist on 4/29, 
resulting in RMAN-06023.

 

What are my options here?  I don't want to restore and mount an older version 
of the controlfile, impacting all of my PDBs, and i would prefer not to have to 
duplicate the entire CDB to be able to do my restore of a single PDB.   It 
seems to me that this should be a supported (and common) scenario from an RMAN 
and PDB perspective, but maybe I'm just not understanding something here.  I'm 
a pretty big fan of multi tenant, but this seems like a major limitation.

 

 



Version 18.8.0.0.0
[oracle@cc01201vm02 ~]$ rman target /
Recovery Manager: Release 18.0.0.0.0 - Production on Wed May 13 16:45:34 2020
Version 18.8.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: UTILCDB2 (DBID=235128710)
RMAN> run {
SET UNTIL TIME "TO_DATE('29-APR-2020 11:00:00','DD-MON-YYYY HH24:MI:SS')";
restore pluggable database osfutestha;
recover pluggable database osfutestha;
}2> 3> 4> 5>
executing command: SET until clause
Starting restore at 13-MAY-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=225 instance=UTILCDB21 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=1176 instance=UTILCDB21 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 05/13/2020 16:46:13
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 569 found to restore
RMAN-06023: no backup or copy of datafile 568 found to restore
RMAN-06023: no backup or copy of datafile 567 found to restore
RMAN-06023: no backup or copy of datafile 565 found to restore
RMAN-06023: no backup or copy of datafile 563 found to restore
RMAN-06023: no backup or copy of datafile 560 found to restore
RMAN-06023: no backup or copy of datafile 557 found to restore
RMAN-06023: no backup or copy of datafile 555 found to restore
RMAN-06023: no backup or copy of datafile 553 found to restore
RMAN-06023: no backup or copy of datafile 551 found to restore
RMAN-06023: no backup or copy of datafile 549 found to restore
RMAN-06023: no backup or copy of datafile 546 found to restore
RMAN-06023: no backup or copy of datafile 540 found to restore
RMAN-06023: no backup or copy of datafile 536 found to restore
RMAN-06023: no backup or copy of datafile 534 found to restore
RMAN-06023: no backup or copy of datafile 527 found to restore
RMAN-06023: no backup or copy of datafile 525 found to restore
RMAN-06023: no backup or copy of datafile 523 found to restore
RMAN-06023: no backup or copy of datafile 521 found to restore
RMAN-06023: no backup or copy of datafile 514 found to restore
RMAN-06023: no backup or copy of datafile 513 found to restore
RMAN-06023: no backup or copy of datafile 510 found to restore
RMAN-06023: no backup or copy of datafile 509 found to restore
RMAN-06023: no backup or copy of datafile 508 found to restore
RMAN-06023: no backup or copy of datafile 506 found to restore
RMAN-06023: no backup or copy of datafile 505 found to restore

        

 

per my open SR and some debug traces.

 

The point in time set:
SET UNTIL TIME "TO_DATE('29-APR-2020 11:00:00','DD-MON-YYYY HH24:MI:SS')";

Translated to:
DBGRCV: Until time: TO_DATE('29-APR-2020 11:00:00','DD-MON-YYYY HH24:MI:SS'), 
toscn: 0 (krmkicat)

DBGSQL: TARGET> select TO_DATE('29-APR-2020 11:00:00','DD-MON-YYYY HH24:MI:SS') 
from sys.dual
DBGSQL: sqlcode = 0
DBGSQL: D :mydate = "29-APR-2020 110000"

DBGSQL: TARGET> begin dbms_rcvman.setAllIncarnations(TRUE); end;
DBGSQL: sqlcode = 0
DBGRCVMAN: allIncarnations is set to TRUE

DBGSQL: TARGET> declare tmpscn number; begin dbms_rcvman.setUntilTime(:date); 
tmpscn := dbms_rcvman.getUntilScn; if (:toscn > 0) then 
dbms_rcvman.setUntilScn(tmpscn + 1); end if; :untscn := tmpscn; end;
DBGSQL: sqlcode = 0
DBGSQL: B :toscn = NULL
DBGSQL: B :untscn = 11944075292177
DBGSQL: B :date = "29-APR-2020 110000"
DBGRCVMAN: ENTERING setUntilTime
DBGRCVMAN: EXITING setUntilTime untilSCN=11944075292177
DBGANY: Current untilscn: 11944075292177 [13:32:08.678] (krmkicat)
DBGRCV: EXITED krmkicat

There are a few datafiles that are in the restore list that were created after 
the point in time/SCN.

DBGRCVMAN: dfNumber=575 creationSCN=11945330321543 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=575 creationSCN=11945330321543 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=576 creationSCN=11945330393270 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=576 creationSCN=11945330393270 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=577 creationSCN=11945381134908 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=577 creationSCN=11945381134908 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=578 creationSCN=11945381134935 pluginSCN=0 foreignDbid= 
pluggedRonly=0
DBGRCVMAN: dfNumber=578 creationSCN=11945381134935 pluginSCN=0 foreignDbid= 
pluggedRonly=0

That means there is not a recoverable copy of the database using the 
controlfile used to the point in time. You will have to restore a controlfile 
from before these datafiles so they are not part of the controlfile when the 
restore is done and recovery actions calculated by RMAN.  

 

Thanks,

Anthony Sanchez

Other related posts: