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

From: Mark W. Farnham <mwf_at_rsiz.com>
Date: Sun, 24 May 2020 06:16:03 -0400
Message-ID: <55cc01d631b4$55337bc0$ff9a7340$_at_rsiz.com>



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_at_freelists.org [mailto:oracle-l-bounce_at_freelists.org] 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_at_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_at_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

--
http://www.freelists.org/webpage/oracle-l
Received on Sun May 24 2020 - 12:16:03 CEST

Original text of this message