在Oracle 18C数据库中,创建PDB时可以同时为PDB创建快照,完整的保存快照创建时间点的PDB数据。PDB快照主要有两个作用:
- 通过闪回恢复数据到快照时间点
- 使用快照PDB查询历史数据
每个PDB快照都会关联一个快照名称,可以在创建时定义也可以由系统自动生成。同时,每个快照也会关联创建时的时间戳和SCN。每个PDB允许保存的最大PDB快照数量由MAX_PDB_SNAPSHOTS属性控制,最大和默认值均为8。当创建的PDB快照数量超过定义时,最先创建的PDB快照将会被删除。使用alter database命令可以修改最大允许的PDB快照数量,如果将限制设为0,则会删除所有的PDB快照。
PDB创建时默认开始快照功能,可以通过两种方式对PDB快照进行定义:
1. 手工方式
创建或修改PDB是指定snapshot mode manual字句,这是PDB创建时的默认行为
create pluggable database pdb1 snapshot mode manual;
2. 定义一个自动创建的时间周期
alter pluggable database pdb1 snapshot mode every 24 hours;
当时间量以分钟表示时,指定值必须小于3000;当时间量以小时表示时,指定值不能超过2000。
PDB快照创建完成后,可以利用其创建新的PDB。使用的PDB快照可通过快照名称、快照SCN或者快照时间戳来指定。
create pluggable database pdb1_day_1 from pdb1 using snapshot <snapshot_name>;
create pluggable database pdb1_day_2 from pdb1 using snapshot at scn <snapshot_SCN>;
在出现用户错误或其他极端情况时,PDB快照还可用于对PDB的闪回。实施步骤如下: 1.关闭PDB1 2.从指定PDB快照创建新的PDB 3.删除PDB1 4.重命名新的PDB为PDB1 5.打开PDB1