3. 执行闪回
a)
如果 PDB 使用本地撤消:
SQL> alter pluggable database PDB1 close; SQL> flashback pluggable database PDB1 to restore point TEST1; SQL> alter pluggable database PDB1 open resetlogs;
湾如果 PDB 使用共享的撤消和在 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 使用共享撤消和 PDB 关闭时创建的还原点(即干净的还原点)
SQL> alter pluggable database PDB1 close; SQL> flashback pluggable database PDB1 to clean restore point TEST1; SQL> alter pluggable database PDB1 open resetlogs;
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
1. 在 PDB 级别创建还原点
连接到特定的 PDB,然后运行 CREATE RESTORE POINT 命令:
SQL> alter session set container=PDB1; SQL> create restore point TEST1; SQL> create restore point TEST2 guarantee flashback database;
或者
连接到 CDB 并使用 CREATE RESTORE POINT 命令的 FOR PLUGGABLE DATABASE 子句:
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 开始,我们可以选择使用本地撤消创建多租户数据库。
这意味着每个 PDB 都使用它自己的 UNDO 表空间。
在这样的 PDB 设置中,PDB 级别的闪回操作可以回滚对 PDB 的撤消表空间所做的更改,类似于该 PDB 的系统、系统辅助或者用户表空间,例如:与 CDB 或者其他 PDB 没有依赖关系。
但是,如果 12.2 Multitenant Database 仍在使用 Shared Undo,在这种设置中,UNDO 表空间在所有 PDB 之间共享。
因此,如果在 PDB 级别执行闪回操作,我们需要使用 AUXILIARY DESTINATION 子句以及 FLASHBACK PLUGGABLE DATABASE 命令。
这用于创建一个辅助实例,其中恢复 CDB 的系统、系统辅助和撤消直到闪回的时间点,以回滚正在执行闪回的特定 PDB 中的活动事务。
为避免在使用共享撤消的 PDB 闪回期间创建此辅助实例,我们可以选择在 PDB 关闭的情况下创建一个干净的还原点。
在将 PDB 闪回到干净的还原点时,不需要创建辅助实例,因为在还原点时 PDB 中没有活动事务:
SQL> alter pluggable database PDB1 close; SQL> create clean restore point Before_Upgrade for pluggable database PDB1;
这篇文章讨论了如何为 PDB 创建还原点并在 12.2 引入的 PDB 级别执行闪回。
出于本文档的目的,以下虚构环境用作描述该过程的示例:
PDB Name: PDB1 Restore Point: TEST1 Restore Point (Guarantee) TEST2