PDB Refresh是12C推出的特性,具有对源端PDB进行增量同步的功能,每次刷新会将源端PDB中的任何更改同步到目标PDB(在此环境中目标PDB被称作Refreshable PDB)中,目前增量同步方式有两种:手动方式与自动方式。
一、Refresh MODE语句
在使用Create Pluggable Database创建PDB时指定Refresh MODE子句用来控制是否开启刷新机制。
该子句目前只在”Create Pluggable Database… From”中支持,可以使用此语句指定如下选项:
指定Refresh MODE NONE,这是默认方式,在创建PDB时不开启刷机机制。
指定Refresh MODE MANUAL子句,创建手动刷新的PDB。
指定Refresh MODE EVERY
number_of_minutes MINUTES
子句,创建以周期性刷新的PDB。
另外值得一提的是Oracle 18c对Refreshable PDB进行了进一步的增强,增强为Refreshable PDB Switchover(可刷新PDB的切换),在12.2.1中源PDB只能作为源端PDB,而在18c中可对源PDB和目标PDB进行角色转换,该功能类似Active Dataguard的主备切换,只不过Oracle在PDB Refresh中再次实现了该功能。
目前Refreshable PDB只能在只读模式下打开,当Refreshable PDB进行刷新时,Refreshable PDB必须处于关闭状态,只读模式打开时会停止刷新,当再次关闭Refreshable PDB时继续上次的刷新,也可以将Refreshable PDB更改为Refresh MODE NONE模式,更改之后你无法在将PDB改为Refreshable PDB。
另外也可以使用Alter Pluggable Database命令将Refreshable PDB从手动刷新更改为自动刷新,也可以从自动刷新更改为手动刷新,同样通过语句Alter Pluggable Database +Refresh MODE更改为非Refreshable PDB,但是非Refreshable PDB不可以被更改为Refreshable PDB。
同时需要注意的是Refreshable PDB和源PDB必须属于不同的CDB,因此Refreshable PDB需要使用远端的CDB中的PDB来创建,在创建期间必须使用dblink,但实际情况是Source PDB和Refreshable PDB可以属于同一个CDB,只不过在创建Refreshable PDB时必须指定DBlink,DBlink指向自己所在的CDB,否则语法无法通过。
Refreshable PDB的应用场景可以用在开发和测试环境的搭建过程中, 因为数据是采用增量同步的方式,这样就减少了对源数据库的影响,也可以作为online备份库。
Clone源端的PDB前期注意事项:
如果PDB被Clone的到的CDB的字符集不是AL32UTF8,那么源与目标字符集必须兼容。
源端与目标端的字节顺序必须相同。
连接的用户在CDB中必须拥有’Create Pluggable Database’的权限。
源PDB不可以是关闭状态。
源端PDB必须为归档模式。
源端PDB必须是local undo模式。
在Refreshable PDB创建后,如果源端需要创建相应表空间,那么目标端需要配置
PDB_FILE_NAME_CONVERT
参数或使用OMF目录管理方式(OMF级别高于PDB_FILE_NAME_CONVERT
),否正会导致目标端PDB刷新失败。目标端采用OMF目录管理方式后,Create Pluggable Database子句中不能指定
file_name_convert
做显示目录转换,否正报ORA-01276错误。在使用刷新目标PDB与源PDB同步数据时,是通过dblink从源PDB访问redo,但有些时候,当需要更新刷新副本时,源PDB或源PDB所属的CDB可能无法访问,在这种情况下,设置
REMOTE_RECOVERY_FILE_DES
T参数,将尝试从此参数指定的目录中读取归档日志文件。刷新与切换命令均需在目标PDB中执行。
二、PDB Refreshcesh
如下将源端PDB:woqupdb通过refresh方式克隆到本地,且命名为qdatapdb。
(1)创建目标端到源端库的DBLINK:orcl12c
sys. ora12c>CREATE DATABASE LINK orcl12c CONNECT TO system IDENTIFIEDBY oracle USING 'orcl12c';
Database link created.
Elapsed: 00:00:00.15
sys. ora12c>
克隆源端WOQUPDB
sys. orcl12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4WOQUPDB READ WRITENO
sys. orcl12c>
(2)目标端配置OMF目录管理方式
sys. ora12c>alter system set db_create_file_dest='/u01/app/oracle/oradata';
System altered.
Elapsed: 00:00:00.04
sys. ora12c>
(3)在目标端使用CREATE PLUGGABLE DATABASE + REFRESH MODE MANUAL语句创建qdatapdb
sys. ora12c>CREATE PLUGGABLE DATABASE qdatapdb FROM woqupdb@orcl12c REFRESH MODE MANUAL;
Pluggable database created.
Elapsed: 00:00:14.20
sys. ora12c>
(4)检查克隆完成的QDATAPDB
sys. ora12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ --<