克隆PDB数据库操作

Posted bisal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了克隆PDB数据库操作相关的知识,希望对你有一定的参考价值。

Oracle 12c开始提供了多租户数据库的功能,对于不同PDB的复制,可以通过克隆,非常便捷地实现。

测试库是19c,当前有个BISALPDB1的PDB,

SQL> select banner from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production


SQL> show pdbs;
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  YES
         3 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  YES
         3 BISALPDB1                      READ WRITE YES
         5 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  YES
         3 BISALPDB1                      READ WRITE YES
         5 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  YES
         3 BISALPDB1                      READ WRITE YES

通过alert日志,可以看到删除物理文件的操作,

drop pluggable database bisalpdb2 including datafiles
2022-01-01T15:13:37.179421+08:00
Deleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/users01.dbf
Deleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/temp01.dbf
Deleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/undotbs01.dbf
Deleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/sysaux01.dbf
Deleted file /opt/oracle/oradata/BISALCDB/BISALPDB2/system01.dbf
Completed: drop pluggable database bisalpdb2 including datafiles

如果是Oracle 12c以上,采用了CDB-PDB的模式,需要复制一个PDB数据库的时候,这种克隆操作,确实非常便捷。

近期更新的文章:

SQL调优和性能监控利器SQL Monitor

spool导出格式的问题

最近碰到的一些问题

关于数据治理的读书笔记 - 什么是数据治理?

关于数据治理的读书笔记 - 数据治理、数据管理和数据管控的理解

文章分类和索引:

公众号900篇文章分类和索引

以上是关于克隆PDB数据库操作的主要内容,如果未能解决你的问题,请参考以下文章

番外:可刷新PDB的管理操作(如何切换PDB Switching Over)

利用ADG Standby克隆PDB

利用ADG Standby克隆PDB

多租户:Oracle Database 19c 中的 DBCA PDB 远程克隆

使用已有PDB克隆PDB

克隆pdb