【RECO_ORACLE】Oracle闪回PDB的方法

时间:2023-01-10 16:06:49

实验环境

搭建平台:VMware Workstation

OS:OL 7.5

DB:Oracle 12.2.0.1


具体步骤

闪回PDB就是闪回数据库,思路和闪回非PDB环境类似,都是恢复到某个还原点,所以第一步我们先创建一个还原点:

1. 创建还原点

有两种等价的方式:

(1)在CDB创建

SQL> alter session set container=CDB$ROOT;  ##切换到根容器

SQL> create restore point rsp1 for pluggable database pdbtest1;  ##需要指定PDB

SQL> create restore point rsp2 for pluggable database pdbtest1 guarantee flashback database;  ##创建一个保证还原点的语法, 保证还原点是不会随着时间从控制文件中删除和必须明确删除。

 

(2)直接在PDB创建

SQL> alter session set container=pdbtest1;  ##切换到PDB

SQL> create restore point rsp1;

SQL> create restore point rsp2 guarantee flashback database;   ##创建一个保证还原点的语法

 

注:

如果是共享undo,闪回会创建辅助实例,所以建议使用以下步骤创建clean还原点,来避免闪回时创建辅助实例( 12.2及以上版本建议使用本地undo(local undo),与其他PDB表空间互不干扰):

SQL> alter pluggable database pdbtest1 close;   ##需要先停库

SQL> create clean restore point BEFORE_UPGRADE for pluggable database pdbtest1;  ##创建clean还原点

 

(3)检查还原点信息

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

或者RMAN查看

$ rman target /

RMAN> list restore point all;

 

2. 闪回PDB

(1)share undo的两种不同情况的闪回方法

1) 对于在线直接创建还原点

SQL> alter pluggable database pdbtest1 close;

SQL> flashback pluggable database pdbtest1 to restore point rsp1 auxiliary destination '/u01/app/oracle/oradata/stage';  ##必须添加“ auxiliary destination”关键字!此时会创建一个辅助实例,但对于clean还原点不需要这个关键字

SQL> alter pluggable database pdbtest1 open resetlogs;

 

2) 对于停库创建clean还原点

SQL> alter pluggable database pdbtest1 close;

SQL> flashback pluggable database pdbtest1 to clean restore point rsp1;

SQL> alter pluggable database pdbtest1 open resetlogs;

 

(2)local undo的闪回方法

SQL> alter pluggable database pdbtest1 close;

SQL> flashback pluggable database pdbtest1 to restore point rsp1;

SQL> alter pluggable database pdbtest1 open resetlogs;