Oracle 12c: Table-Point-in-Time-Recovery in einer Multitenant Umgebung

12. Dezember 2014 Aus Von Markus Flechtner

Mit Oracle 12c hat Oracle die Funktion „Table-Point-in-Time-Recovery“, kurz TPITR, eingeführt. Diese Funktion vereinigt die bisherige Vorgehensweise „Tablespace-Point-in-Time-Recovery – Export – Import“ in einem Befehl und erlaubt es, eine Tabelle über „Flashback Table“ hinaus auf einen alten Stand zu setzen. Auch ein Recovery einzelner Partitionen ist möglich.

TPITR funktioniert auch sehr schön in Kombination mit der Multitenant-Option von Oracle 12c.

Table-Point-in-Time-Recovery in einer Pluggable Database

oracle@training:/u00/app/oracle/network/admin/ [TVD12CDB] rman target=/
Recovery Manager: Release 12.1.0.2.0 - Production on Fri Dec 12 10:32:18 2014
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
connected to target database: TVD12CDB (DBID=3125497841)

RMAN> recover table scott.emp of pluggable database crm04
2> until scn 4980775
3> auxiliary destination ‚/u01/aux/AUX‘
4> remap table scott.emp:emp_OLD;

Starting recover at 12-DEC-14
using channel ORA_DISK_1
RMAN-05026: WARNING: presuming following set of tablespaces applies to specified Point-in-Time

List of tablespaces expected to have UNDO segments
Tablespace SYSTEM
Tablespace UNDOTBS1

Creating automatic instance, with SID=’tsvb‘

initialization parameters used for automatic instance:
db_name=TVD12CDB
db_unique_name=tsvb_pitr_crm04_TVD12CDB
compatible=12.1.0.2.0
db_block_size=8192
db_files=200
diagnostic_dest=/u00/app/oracle
_system_trig_enabled=FALSE
db_domain=trivadistraining.com
sga_target=900M
processes=200
db_create_file_dest=/u01/aux/AUX
log_archive_dest_1=’location=/u01/aux/AUX‘
enable_pluggable_database=true
_clone_one_pdb_recovery=true
#No auxiliary parameter file used

starting up automatic instance TVD12CDB

Oracle instance started
Total System Global Area 943718400 bytes
Fixed Size 2931136 bytes
Variable Size 251659840 bytes
Database Buffers 683671552 bytes
Redo Buffers 5455872 bytes
Automatic instance created

contents of Memory Script:
{
# set requested point in time
set until scn 4980775;
# restore the controlfile
restore clone controlfile;

# mount the controlfile
sql clone ‚alter database mount clone database‘;

# archive current online log
sql ‚alter system archive log current‘;
}
executing Memory Script

executing command: SET until clause

Starting restore at 12-DEC-14
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=12 device type=DISK

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/c-3125497841-20141212-01
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/c-3125497841-20141212-01 tag=TAG20141212T102358
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/aux/AUX/TVD12CDB/controlfile/o1_mf_b8ofxx1f_.ctl
Finished restore at 12-DEC-14

sql statement: alter database mount clone database

sql statement: alter system archive log current

contents of Memory Script:
{
# set requested point in time
set until scn 4980775;
# set destinations for recovery set and auxiliary set datafiles
set newname for clone datafile 1 to new;
set newname for clone datafile 5 to new;
set newname for clone datafile 3 to new;
set newname for clone datafile 42 to new;
set newname for clone datafile 43 to new;
set newname for clone tempfile 1 to new;
set newname for clone tempfile 6 to new;
# switch all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile 1, 5, 3, 42, 43;

switch clone datafile all;
}
executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME

renamed tempfile 1 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_temp_%u_.tmp in control file
renamed tempfile 6 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_temp_%u_.tmp in control file

Starting restore at 12-DEC-14
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_system_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_undotbs1_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_sysaux_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/1mppnfi8_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/1mppnfi8_1_1 tag=TVD12CDB_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:15
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00042 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_system_%u_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00043 to /u01/aux/AUX/TVD12CDB/datafile/o1_mf_sysaux_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/23ppvjhp_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/23ppvjhp_1_1 tag=TAG20141212T102353
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
Finished restore at 12-DEC-14

datafile 1 switched to datafile copy
input datafile copy RECID=6 STAMP=866112038 file name=/u01/aux/AUX/TVD12CDB/datafile/o1_mf_system_b8ofy4rz_.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=7 STAMP=866112038 file name=/u01/aux/AUX/TVD12CDB/datafile/o1_mf_undotbs1_b8ofy4rw_.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=8 STAMP=866112039 file name=/u01/aux/AUX/TVD12CDB/datafile/o1_mf_sysaux_b8ofy4r9_.dbf
datafile 42 switched to datafile copy
input datafile copy RECID=9 STAMP=866112039 file name=/u01/aux/AUX/TVD12CDB/datafile/o1_mf_system_b8og0hty_.dbf
datafile 43 switched to datafile copy
input datafile copy RECID=10 STAMP=866112039 file name=/u01/aux/AUX/TVD12CDB/datafile/o1_mf_sysaux_b8og0htq_.dbf

contents of Memory Script:
{
# set requested point in time
set until scn 4980775;
# online the datafiles restored or switched
sql clone „alter database datafile 1 online“;
sql clone „alter database datafile 5 online“;
sql clone „alter database datafile 3 online“;
sql clone ‚CRM04‘ „alter database datafile
42 online“;
sql clone ‚CRM04‘ „alter database datafile
43 online“;
# recover and open database read only
recover clone database tablespace „SYSTEM“, „UNDOTBS1“, „SYSAUX“, „CRM04″:“SYSTEM“, „CRM04″:“SYSAUX“;
sql clone ‚alter database open read only‘;
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile 1 online
sql statement: alter database datafile 5 online
sql statement: alter database datafile 3 online
sql statement: alter database datafile 42 online
sql statement: alter database datafile 43 online

Starting recover at 12-DEC-14
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 195 is already on disk as file /u00/app/oracle/admin/TVD12CDB/arch/TVD12CDB_1_195_865028809.arc
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=116
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=117
channel ORA_AUX_DISK_1: restoring archived log
..
archived log thread=1 sequence=137
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=138
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/21ppvjhj_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/21ppvjhj_1_1 tag=TAG20141212T102346
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=/u01/aux/AUX/1_116_865028809.dbf thread=1 sequence=116
..
archived log file name=/u01/aux/AUX/1_137_865028809.dbf thread=1 sequence=137
archived log file name=/u01/aux/AUX/1_138_865028809.dbf thread=1 sequence=138
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=139
channel ORA_AUX_DISK_1: restoring archived log
..
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=193
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/22ppvjhn_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/22ppvjhn_1_1 tag=TAG20141212T102346
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=/u01/aux/AUX/1_139_865028809.dbf thread=1 sequence=139
archived log file name=/u01/aux/AUX/1_140_865028809.dbf thread=1 sequence=140
..
archived log file name=/u01/aux/AUX/1_193_865028809.dbf thread=1 sequence=193
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=194
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/24ppvjhs_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/24ppvjhs_1_1 tag=TAG20141212T102356
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/aux/AUX/1_194_865028809.dbf thread=1 sequence=194
archived log file name=/u00/app/oracle/admin/TVD12CDB/arch/TVD12CDB_1_195_865028809.arc thread=1 sequence=195
media recovery complete, elapsed time: 00:00:00
Finished recover at 12-DEC-14

sql statement: alter database open read only

contents of Memory Script:
{
sql clone ‚alter pluggable database CRM04 open read only‘;
}
executing Memory Script

sql statement: alter pluggable database CRM04 open read only

contents of Memory Script:
{
sql clone „create spfile from memory“;
shutdown clone immediate;
startup clone nomount;
sql clone „alter system set control_files =
“/u01/aux/AUX/TVD12CDB/controlfile/o1_mf_b8ofxx1f_.ctl“ comment=
“RMAN set“ scope=spfile“;
shutdown clone immediate;
startup clone nomount;
# mount database
sql clone ‚alter database mount clone database‘;
}
executing Memory Script

sql statement: create spfile from memory

database closed
database dismounted
Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area 943718400 bytes
Fixed Size 2931136 bytes
Variable Size 255854144 bytes
Database Buffers 679477248 bytes
Redo Buffers 5455872 bytes

sql statement: alter system set control_files = “/u01/aux/AUX/TVD12CDB/controlfile/o1_mf_b8ofxx1f_.ctl“ comment= “RMAN set“ scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area 943718400 bytes

Fixed Size 2931136 bytes
Variable Size 255854144 bytes
Database Buffers 679477248 bytes
Redo Buffers 5455872 bytes

sql statement: alter database mount clone database

contents of Memory Script:
{
# set requested point in time
set until scn 4980775;
# set destinations for recovery set and auxiliary set datafiles
set newname for datafile 44 to new;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile 44;

switch clone datafile all;
}
executing Memory Script

executing command: SET until clause
executing command: SET NEWNAME

Starting restore at 12-DEC-14
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=12 device type=DISK
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00044 to /u01/aux/AUX/TSVB_PITR_CRM04_TVD12CDB/datafile/o1_mf_tpitrtes_%u_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/23ppvjhp_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/23ppvjhp_1_1 tag=TAG20141212T102353
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 12-DEC-14

datafile 44 switched to datafile copy
input datafile copy RECID=12 STAMP=866112129 file name=/u01/aux/AUX/TSVB_PITR_CRM04_TVD12CDB/datafile/o1_mf_tpitrtes_b8og3h3b_.dbf

contents of Memory Script:
{
# set requested point in time
set until scn 4980775;
# online the datafiles restored or switched
sql clone ‚CRM04‘ „alter database datafile
44 online“;
# recover and open resetlogs
recover clone database tablespace „CRM04″:“TPITRTEST“, „SYSTEM“, „UNDOTBS1“, „SYSAUX“, „CRM04″:“SYSTEM“, „CRM04″:“SYSAUX“ delete archivelog;
alter clone database open resetlogs;
}
executing Memory Script

executing command: SET until clause

sql statement: alter database datafile 44 online

Starting recover at 12-DEC-14
using channel ORA_AUX_DISK_1

starting media recovery

archived log for thread 1 with sequence 195 is already on disk as file /u00/app/oracle/admin/TVD12CDB/arch/TVD12CDB_1_195_865028809.arc
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=194
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/TVD12CDB/24ppvjhs_1_1
channel ORA_AUX_DISK_1: piece handle=/u02/backup/TVD12CDB/24ppvjhs_1_1 tag=TAG20141212T102356
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/aux/AUX/1_194_865028809.dbf thread=1 sequence=194
channel clone_default: deleting archived log(s)
archived log file name=/u01/aux/AUX/1_194_865028809.dbf RECID=561 STAMP=866112129
archived log file name=/u00/app/oracle/admin/TVD12CDB/arch/TVD12CDB_1_195_865028809.arc thread=1 sequence=195
media recovery complete, elapsed time: 00:00:00
Finished recover at 12-DEC-14

database opened

contents of Memory Script:
{
sql clone ‚alter pluggable database CRM04 open‘;
}
executing Memory Script

sql statement: alter pluggable database CRM04 open

contents of Memory Script:
{
# create directory for datapump import
sql ‚CRM04‘ „create or replace directory
TSPITR_DIROBJ_DPDIR as “
/u01/aux/AUX““;
# create directory for datapump export
sql clone ‚CRM04‘ „create or replace directory
TSPITR_DIROBJ_DPDIR as “
/u01/aux/AUX““;
}
executing Memory Script

sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as “/u01/aux/AUX“
sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as “/u01/aux/AUX“

Performing export of tables…
EXPDP> Starting „SYS“.“TSPITR_EXP_tsvb_xqxf“:
EXPDP> Estimate in progress using BLOCKS method…
EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
EXPDP> Total estimation using BLOCKS method: 64 KB
EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
EXPDP> Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
EXPDP> Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
EXPDP> . . exported „SCOTT“.“EMP“ 8.773 KB 14 rows
EXPDP> Master table „SYS“.“TSPITR_EXP_tsvb_xqxf“ successfully loaded/unloaded
EXPDP> ******************************************************************************
EXPDP> Dump file set for SYS.TSPITR_EXP_tsvb_xqxf is:
EXPDP> /u01/aux/AUX/tspitr_tsvb_68747.dmp
EXPDP> Job „SYS“.“TSPITR_EXP_tsvb_xqxf“ successfully completed at Fri Dec 12 10:42:39 2014 elapsed 0 00:00:17
Export completed

contents of Memory Script:
{
# shutdown clone before import
shutdown clone abort
}
executing Memory Script

Oracle instance shut down

Performing import of tables…
IMPDP> Master table „SYS“.“TSPITR_IMP_tsvb_fzfg“ successfully loaded/unloaded
IMPDP> Starting „SYS“.“TSPITR_IMP_tsvb_fzfg“:
IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE
IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
IMPDP> . . imported „SCOTT“.“EMP_OLD“ 8.773 KB 14 rows
IMPDP> Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
IMPDP> ORA-31684: Object type CONSTRAINT:“SCOTT“.“PK_EMP“ already exists
IMPDP> Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
IMPDP> ORA-31684: Object type REF_CONSTRAINT:“SCOTT“.“FK_DEPTNO“ already exists
IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
IMPDP> Job „SYS“.“TSPITR_IMP_tsvb_fzfg“ completed with 2 error(s) at Fri Dec 12 10:42:48 2014 elapsed 0 00:00:03
import completed with errors; Oracle Data Pump dump file tspitr_tsvb_68747.dmp is retained

Removing automatic instance
Automatic instance removed
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_temp_b8og21mf_.tmp deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_temp_b8og2073_.tmp deleted
auxiliary instance file /u01/aux/AUX/TSVB_PITR_CRM04_TVD12CDB/onlinelog/o1_mf_3_b8og3m7h_.log deleted
auxiliary instance file /u01/aux/AUX/TSVB_PITR_CRM04_TVD12CDB/onlinelog/o1_mf_2_b8og3lxl_.log deleted
auxiliary instance file /u01/aux/AUX/TSVB_PITR_CRM04_TVD12CDB/onlinelog/o1_mf_1_b8og3lo2_.log deleted
auxiliary instance file /u01/aux/AUX/TSVB_PITR_CRM04_TVD12CDB/datafile/o1_mf_tpitrtes_b8og3h3b_.dbf deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_sysaux_b8og0htq_.dbf deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_system_b8og0hty_.dbf deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_sysaux_b8ofy4r9_.dbf deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_undotbs1_b8ofy4rw_.dbf deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/datafile/o1_mf_system_b8ofy4rz_.dbf deleted
auxiliary instance file /u01/aux/AUX/TVD12CDB/controlfile/o1_mf_b8ofxx1f_.ctl deleted
Finished recover at 12-DEC-14

RMAN>

Die Fehlermeldungen „ORA-31684“ wegen der doppelten Constraint-Namen sind zwar ärgerlich,
aber meiner Meinung nach in dem Gesamtkontext zu verschmerzen. Hauptsache, der alte
Stand der Daten ist wieder da:

Und das Ergebnis in der Datenbank ist:

SQL> select empno,ename,sal from scott.emp where ename='KING';
EMPNO ENAME SAL
---------- ---------- ----------
7839 KING 5500

SQL> select empno,ename,sal from scott.emp_OLD where ename=’KING‘;

EMPNO ENAME SAL
———- ———- ———-
7839 KING 5000

.. jetzt können wir also auch über passende Updates die versehentliche Gehaltserhöhung
(= der angenommene Grund für den TPITR) rückgängig machen.

Die Dump-Datei verbleibt auch auf dem Server:
oracle@training:~/ [TVD12CDB] ls -l /u01/aux/AUX/*.dmp
-rw-r----- 1 oracle oinstall 172032 Dec 12 10:42 /u01/aux/AUX/tspitr_tsvb_68747.dmp

Leider wird nicht vollständig aufgeräumt. Die Archivelog-Dateien und die für das Recovery angelegten Verzeichnisse verbleiben auf dem Server:

oracle@training:/u01/aux/AUX/ [TVD12CDB] tree /u01/aux/AUX
/u01/aux/AUX
├── 1_116_865028809.dbf
├── 1_117_865028809.dbf
├── 1_118_865028809.dbf
..
├── 1_192_865028809.dbf
├── 1_193_865028809.dbf
├── tspitr_tsvb_68747.dmp
├── TSVB_PITR_CRM04_TVD12CDB
│   ├── datafile
│   └── onlinelog
└── TVD12CDB
├── controlfile
├── datafile
└── onlinelog

TPITR funktioniert auch im Root-Container (CDB$ROOT) – obwohl dort natürlich keine Applikationsobjekte abgelegt sein sollten.

Aber Achtung: wenn man mit dem Default-Prefix für die Common User (= „C##“), dann ergibt der naheliegende Befehl

RMAN> recover table C##CDB_DBA_ADMIN1.dept until scn 4993005 auxiliary destination '/u01/aux/AUX' remap table C##CDB_DBA_ADMIN1.dept:dept_old;

eine Fehlermeldung:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "end-of-file": expecting one of: "dot"
RMAN-01007: at line 3 column 1 file: standard input

Der Workaround ist, den Usernamen in doppelte Anführungszeichen einzuschließen:

RMAN> recover table "C##CDB_DBA_ADMIN1".dept until scn 4993005 auxiliary destination '/u01/aux/AUX' remap table "C##CDB_DBA_ADMIN1".dept:dept_old;

Starting recover at 12-DEC-14
current log archived
using channel ORA_DISK_1
..

Insgesamt ist TPITR ein hilfreiches Feature, das zwar nichts grundlegend Neues bietet, aber bekannte Abläufe sinnvoll zusammenfasst.

Weitere Informationen zur „Table-Point-in-Time-Recovery“ gibt es im Backup & Recovery Users Guide.

Nachtrag (18.12.2014):
Auch wenn nur ein kleiner Teil eines Datafiles für das Recovery einer Tabelle benötigt wird, wird trotzdem das komplette Datafile restored.


Werbung (Amazon-Partner-Link)