oracle 12.1还不支持在线克隆pdb,需要启动到read only模式,生产环境无法接受。突然想到生产库有dg库,dg库本来就是只读的,能不能直接用它作为克隆?查了下文章还真有这种方法,记录一下有空测试。

源库(dg库要启到read only模式):

SQL> connect sys/oracle@//192.168.78.105/STCDB as sysdba
Connected.

SQL> select banner from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

SQL> select name,open_mode,database_role from v$database;

NAME      OPEN_MODE            DATABASE_ROLE
--------- -------------------- ----------------
STCDB     READ ONLY            PHYSICAL STANDBY

SQL> select name,open_mode from v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
STDB1                          READ ONLY

目标库,先创建dblink

SQL> connect sys/oracle@//192.168.78.113/CDB as sysdba
Connected.

SQL> select banner from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

SQL> select name,open_mode from v$database;

NAME      OPEN_MODE
--------- --------------------
CDB       READ WRITE

SQL> select name,open_mode from v$pdbs;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
PDB                            READ WRITE

SQL> create database link DBLINK_TO_STCDB connect to system identified by oracle using '//192.168.78.105/STCDB';
Database link created.

利用dblink从dg库克隆,创建目标pdb

SQL> create pluggable database STDB2 from STDB1@DBLINK_TO_STCDB;
Pluggable database created.

SQL> alter pluggable database STDB2 open;
Pluggable database altered.

很简单方便,而且不会影响到主库