通过 DB link 从另一个 CDB 克隆 PDB(远程克隆)
Oracle多租户命令
-- 1) In the SOURCE CDB, a common user:
CREATE USER c##clone_user IDENTIFIED BY "<password>" CONTAINER = ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone_user CONTAINER = ALL;
-- 2) In the TARGET CDB root, DB link and test:
CREATE DATABASE LINK clone_link
CONNECT TO c##clone_user IDENTIFIED BY "<password>"
USING '//<source_host>:1521/<source_cdb_service>';
SELECT * FROM dual@clone_link;
-- 3) Clone and open:
CREATE PLUGGABLE DATABASE <new_pdb> FROM <pdb>@clone_link
FILE_NAME_CONVERT = ('/<pdb>/', '/<new_pdb>/');
ALTER PLUGGABLE DATABASE <new_pdb> OPEN;
-- 4) Violations (version, options, parameters, patches):
SELECT name, cause, type, message
FROM pdb_plug_in_violations
WHERE name = UPPER('<new_pdb>') AND status <> 'RESOLVED';作用
通过 DB link 经网络将 PDB 从源 CDB 复制到目标 CDB;无需中间文件或 unplug。
适用场景
用于将 PDB 迁移到另一台服务器/CDB、在独立服务器上创建生产测试副本,或迁移到更新版本的 CDB。
注意
源 CDB 和目标 CDB 在字节序、字符集(或目标为 AL32UTF8)和选件上必须兼容;克隆到更新版本的 PDB 首次会以 RESTRICTED 方式打开,需要执行 datapatch/升级。克隆完成后删除 DB link 和公用用户。热克隆要求源端为本地 undo + ARCHIVELOG。