rman duplicate 不能克隆 pdb 到远端 cdb,仅支持整个 cdb 克隆或同一 cdb 内 pdb 热克隆;跨 cdb 克隆 pdb 必须使用 create pluggable database ... from ...@dblink 或 backup for transport + restore foreign。
能,但必须分清场景:rman duplicate 仅支持克隆整个 cdb(12c/18c),不支持直接克隆单个 pdb 到远端 cdb;真正能“克隆 pdb 到另一 cdb”的,是 create pluggable database ... from ...@dblink 或跨平台 backup for transport + restore foreign 流程。
RMAN DUPLICATE 不能直接克隆 PDB 到远端 CDB
很多人误以为 DUPLICATE PLUGGABLE DATABASE 是标准语法 —— 实际上,Oracle 直到 18c 才在文档中明确支持该语法,且仅限于克隆 PDB 到**同一 CDB 内部**(如本地热克隆),或配合 OMF 在**目标 CDB 已存在同名 PDB 容器时覆盖重建**。对跨 CDB 场景,RMAN DUPLICATE 命令始终操作对象是 CDB 级别,底层会复制控制文件、SPFILE、所有 PDB 数据文件,无法只选一个 PDB。
- 执行
DUPLICATE PLUGGABLE DATABASE pdb1 TO cdb2会报错ORA-65557: duplicate pluggable database not supported for cross-CDB duplication - 12.2 及之前版本的 RMAN 不识别
PLUGGABLE DATABASE作为DUPLICATE的独立 target;它只认DATABASE或PLUGGABLE DATABASE在本地 CDB 内上下文 - 即便 18c+ 启用该语法,也要求源 PDB 处于
READ ONLY,目标 CDB 必须已配置 DB Link 且启用 Local Undo,实际仍走的是逻辑导出/还原路径,非纯 RMAN 块拷贝
真正可行的跨 CDB PDB 克隆方式只有两种
一种是在线、低停机的 CREATE PLUGGABLE DATABASE ... FROM ...@dblink(12.2+ Local Undo 开启时支持源 PDB READ WRITE);另一种是离线、跨平台的 BACKUP FOR TRANSPORT + RESTORE FOREIGN(12.2 起支持,要求字节序一致)。
-
CREATE PLUGGABLE DATABASE pdb_new FROM pdb_old@src_link FILE_NAME_CONVERT=('/old/','/new/'):依赖数据库链接,源端 PDB 需先设为READ ONLY(12.1)或保持READ WRITE(12.2+ 且LOCAL_UNDO_ENABLED=TRUE) -
BACKUP FOR TRANSPORT UNPLUG INTO 'meta.xml' PLUGGABLE DATABASE pdb1:生成元数据 XML 和备份集,scp 到目标端后,用RESTORE FOREIGN PLUGGABLE DATABASE加载,再ALTER PLUGGABLE DATABASE ... OPEN - 二者都不经过 RMAN
DUPLICATE命令;RMAN 在第二种方式里只负责备份和还原,不是“克隆”动作的发起者
容易踩的坑:权限、路径、字节序和版本一致性
无论选哪种方式,失败几乎都卡在这几个硬性条件上,而不是语法写错。
- 目标端 DB Link 用户必须有
CREATE PLUGGABLE DATABASE权限,且该用户在源端 PDB 内存在(不是 CDB$ROOT) -
FILE_NAME_CONVERT必须精确匹配源数据文件路径前缀,漏掉斜杠或大小写错误会导致ORA-65128: unable to create file - 跨平台传输时,
v$database.platform_name必须一致(如都是Linux x86 64-bit),哪怕都是 x86_64,Solaris和AIX因字节序不同也无法互通 - 补丁级别必须一致:12.2.0.1.0 和 12.2.0.1.190115 之间可能因 Bug 修复差异导致
dbms_pdb.check_plug_compatibility返回FALSE
真正动手时,别纠结 RMAN DUPLICATE 能不能克隆 PDB —— 它不能。先确认你是要热迁移(用 CREATE + DB Link)还是冷迁移(用 BACKUP FOR TRANSPORT),再严格核对 Local Undo、字节序、权限这三座关卡。漏掉任何一个,都会卡在 ORA-65139 或 ORA-65126 上,而不是语法问题。











