oracle delete数据恢复 oracle删除数据后的恢复

关于Oracle 12.2 如何在PDB级别进行flashback闪回
本文主要讨论Oracle 12.2如何给PDB建立恢复点并进行PDB级闪回。

方法步骤(适用Oracle Oracle 12.2.0.1及之后版本)

1. 在PDB级别建立恢复点(restore point):

连接到指定PDB并执行CREATE RESTORE POINT命令:

SQL> alter session set container=PDB1;
SQL> create restore point TEST1;
SQL> create restore point TEST2 guarantee flashback database;

或连接到CDB,使用FOR PLUGGABLE DATABASE语法执行CREATE RESTORE POINT命令:

SQL> alter session set container=CDB$ROOT;
SQL> create restore point TEST1 for pluggable database PDB1;
SQL> create restore point TEST2 for pluggable database PDB1 guarantee flashback database;


注意:

从12.2版本开始,我们已经可以选用本地Undo来建立多租户数据库了。这意味着每个PDB可以使用自己的UNDO表空间。
在这种PDB设置下,flashback在PDB级别的操作所做的回滚将能够和CDBh及其它PDB保持独立无关。

不够,如果你的12.2多租户数据库仍然使用共享Undo,那么在这种设置下,Undo表空间将被所有哦PDB所共享。
因此,如果在PDB级别进行闪回操作,我们需要在执行FLASHBACK PLUGGABLE DATABASE时使用AUXILIARY DESTINATION语法。
这将建立一个辅助实例(对应CDB系统,sysaux和undo都会被一起闪回到指定的时间点)。
为了避免使用共享Undo的PDB在进行闪回操作时建立辅助实例,你也可以选择对一个关闭的PDB建立一个干净的恢复点。
当将PDB闪回至这一干净恢复点时,因为当时恢复点的PDB上并没有活动事务,因此也就不需要建立辅助实例了。

SQL> alter pluggable database PDB1 close;
SQL> create clean restore point Before_Upgrade for pluggable database PDB1;

 
2. 通过sql*plus或rman查看恢复点信息:

SQL> select NAME,TIME,SCN,PDB_RESTORE_POINT,GUARANTEE_FLASHBACK_DATABASE from V$RESTORE_POINT;

NAME TIME SCN PDB GUA
--------------- ------------------------------------- ---------- --- ---
TEST2 09-AUG-17 12.42.53.000000000 PM 1451338 YES YES
TEST1 09-AUG-17 12.42.21.000000000 PM 1451318 YES NO

RMAN> list restore point all;

SCN RSP Time Type Time Name
---------------- -------------------- ---------- -------------------- ----
1451318 09-AUG-2017 12:42:21 TEST1
1451338 GUARANTEED 09-AUG-2017 12:42:53 TEST2

3. 进行闪回:

a. 如果PDB使用本地undo:

SQL> alter pluggable database PDB1 close;
SQL> flashback pluggable database PDB1 to restore point TEST1;
SQL> alter pluggable database PDB1 open resetlogs;

b. 如果PDB使用共享undo且恢复点建立时候PDB是打开的:

RMAN> alter pluggable database PDB1 close;
RMAN> flashback pluggable database PDB1 to restore point TEST1 auxiliary destination '/o122/app/oracle/oradata/stage';
RMAN> alter pluggable database PDB1 open resetlogs;

c. 如果PDB使用共享undo且恢复点建立时候PDB是关闭的(即为干净的恢复点):

SQL> alter pluggable database PDB1 close;
SQL> flashback pluggable database PDB1 to clean restore point TEST1;
SQL> alter pluggable database PDB1 open resetlogs;

猜你喜欢

转载自blog.csdn.net/liu_maclean/article/details/81942693