Oracle 12c开始提供了多租户数据库的功能,对于不同PDB的复制,可以通过克隆,非常便捷地实现。
测试库是19c,当前有个BISALPDB1的PDB,
SQL> select banner from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionSQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY YES3 BISALPDB1 READ WRITE YES
如果我现在需要根据BISALPDB1克隆一个完全相同的BISALPDB2,只需要如下操作,
SQL> create pluggable database bisalpdb2 from bisalpdb1 file_name_convert=('BISALPDB1', 'BISALPDB2');Pluggable database created.
其中file_name_convert的第一个参数是源库的数据文件(夹)名称,第二个参数是目标库的数据文件(夹)名称,如果指定为NONE,则会采用OMF自动设置名称。
此时就可以看到已经创建了BISALPDB2,但状态未打开,
SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY YES3 BISALPDB1 READ WRITE YES5 BISALPDB2 MOUNTED
打开这个PDB,就可以使用了,
SQL> alter pluggable database bisalpdb2 open;Warning: PDB altered with errors.SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY YES3 BISALPDB1 READ WRITE YES5 BISALPDB2 READ WRITE YES
我们来对比下这两个PDB的数据文件,BISALPDB1的,
[oracle@bisal BISALCDB]$ cd BISALPDB1/[oracle@bisal BISALPDB1]$ ls -rlht-rw-r----- 1 oracle oinstall 130M Jan 1 08:24 temp01.dbf-rw-r----- 1 oracle oinstall 68M Jan 1 14:54 users01.dbf-rw-r----- 1 oracle oinstall 311M Jan 1 14:54 sysaux01.dbf-rw-r----- 1 oracle oinstall 271M Jan 1 14:55 system01.dbf-rw-r----- 1 oracle oinstall 101M Jan 1 14:55 undotbs01.dbf
BISALPDB2的,可以看到,基本都是相同的,登录BISALPDB2,可以发现,用户表、用户名、用户的密码,和BISALPDB1都是相同的,达到了克隆目的,
[oracle@bisal BISALCDB]$ cd BISALPDB2/[oracle@bisal BISALPDB2]$ ls -rlht-rw-r----- 1 oracle oinstall 130M Jan 1 14:54 temp01.dbf-rw-r----- 1 oracle oinstall 68M Jan 1 14:55 users01.dbf-rw-r----- 1 oracle oinstall 271M Jan 1 14:56 system01.dbf-rw-r----- 1 oracle oinstall 101M Jan 1 15:00 undotbs01.dbf-rw-r----- 1 oracle oinstall 311M Jan 1 15:00 sysaux01.dbf
如果删除PDB,记得加上including datafiles,他会连同数据文件夹一起删除,
SQL> drop pluggable database bisalpdb2 including datafiles;Pluggable database dropped.SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY YES3 BISALPDB1 READ WRITE YES
通过alert日志,可以看到删除物理文件的操作,
drop pluggable database bisalpdb2 including datafiles2022-01-01T15:13:37.179421+08:00Deleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/users01.dbfDeleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/temp01.dbfDeleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/undotbs01.dbfDeleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/sysaux01.dbfDeleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/system01.dbfCompleted: drop pluggable database bisalpdb2 including datafiles
如果是Oracle 12c以上,采用了CDB-PDB的模式,需要复制一个PDB数据库的时候,这种克隆操作,确实非常便捷。
近期更新的文章:
《关于数据治理的读书笔记 - 数据治理、数据管理和数据管控的理解》
文章分类和索引:
文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




