Menu Close

克隆本地PDB创建PDB数据库

参考:

  • Oracle 12C 新特性之 PDB热克隆: https://blog.csdn.net/zhang123456456/article/details/72377623
  • Oracle 19C热克隆应用避坑指南:https://cloud.tencent.com/developer/news/661665

一、简介与要求

1.1. 简介

12cR1版本中克隆一份PDB源库需要打开在read only只读模式 , 在12cR2版本中引入了local undo mode, 源PDB在 read/write 读写模式也可以克隆。local undo mode 也是oracle推崇的模式。

local undo mode 的好处:

  • 1、 减少undo表空间的争用,同时方便拔插.
  • 2、 只有使用local undo才支持下面的新特性: Refresh PDB, Flashback PDB ,(Hot Clone, Relocate PDB in open read/write mode).
  • 3、 point-in-time recovery PDB(根据时间点来恢复PDB).

1.2. 要求

  • 1、 Archive Log Enabled(归档模式)
  • 2、 Local Undo Enabled(本地undo模式)
  • 3、 destination CDB must have a public database link to the source CDB,have sufficient privileges to use the database link.

二、克隆本地PDB

数据库环境:Oracle 18c

2.1. 修改数据库为归档模式

--在SQLPlus下执行如下命令
--在数据库启动状态下修改参数:log_archive_dest_1
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/dbBak1/OracleBak103/archivelog/';
shu immediate;
startup mount;
alter database archivelog;
alter database open;
archive log list;
show parameter log_archive_format;
show parameter log_archive_max_processes;
alter system switch logfile;

2.2. 检查是否开户 local undo

--在SQLPlus下执行如下命令
SET LINES 300 PAGES 999
COL PROPERTY_NAME FOR a25;
COL PROPERTY_VALUE FOR a25;
SELECT PROPERTY_NAME,PROPERTY_VALUE
  FROM database_properties
 WHERE property_name = 'LOCAL_UNDO_ENABLED';

2.3. 查看PDB数据库

--在SQLPlus下执行如下命令
SHOW PDBS;

2.4. 设置 pdb_file_name_convert

--在SQLPlus下执行如下命令
 alter session set pdb_file_name_convert='ETDB2','ETDB1130';
--注意这里 pdb_file_name_convert 参数生效级别设置的是 session
--如果克隆多个PDB可以设置为:'ETDB2','ETDB0930,ETDB1130';

2.5. 克隆数据库(一)

create pluggable database ETDB1130 from ETDB2;
--直接使用该命令报错了。ORA-65005: 文件缺少文件名模式或其文件名模式无效。

2.6. 克隆数据库(二)

alter session set container=etdb2;
show con_name;
select file_name from dba_data_files;
select file_name from dba_temp_files;
alter session set container=cdb$root;
create pluggable database ETDB1130 from ETDB2 file_name_convert=('/u01/app/oracle/oradata/YKT/etdb2/','/home/oracle/oradata/YKT/etdb1130/');
alter pluggable database etdb1130 open;
alter pluggable database etdb1130 save state;