暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

克隆PDB数据库操作

1053

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篇文章分类和索引

文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论