CREATE PLUGGABLE DATABASE ... FROM 远程克隆需满足三大硬性条件:LOCAL_UNDO_ENABLED=TRUE、源CDB为ARCHIVELOG模式、源PDB可READ WRITE打开;dblink需用公共用户授权并设GLOBAL_NAMES=FALSE;FILE_NAME_CONVERT须完整映射所有数据文件路径;RAC环境需补service及验证TEMP表空间。

直接用 CREATE PLUGGABLE DATABASE ... FROM 语句,只要源 PDB 在线、目标 CDB 满足基础条件,10 分钟内就能完成——比 Data Pump 快一个数量级,且不落地、不占临时空间。
远程克隆前必须确认的三个硬性条件
缺一不可,否则会卡在 CREATING 状态或报 ORA-65128/ORA-17628:
-
LOCAL_UNDO_ENABLED = TRUE(查database_properties):RAC 下尤其关键,共享 UNDO 模式会导致克隆失败 - 源 CDB 必须处于
ARCHIVELOG模式(archive log list验证):热克隆依赖归档日志对齐事务一致性 - 源 PDB 必须能以
READ WRITE打开(除非你主动设为READ ONLY):本地 UNDO 开启后,无需停业务
目标端创建 database link 的关键细节
不是随便连通就行,权限和配置错一点就触发 ORA-65193 或 ORA-65235:
- 源端必须建公共用户(
c##xxx),且显式授予CREATE PLUGGABLE DATABASE权限(DBA或CDB_DBA不够) - 目标端
CREATE DATABASE LINK时,建议加ALTER SESSION SET GLOBAL_NAMES = FALSE,否则容易因服务名不匹配报ORA-02085 - dblink 可指向源 CDB 或源 PDB,但连接字符串里的
service_name必须能解析到源端实际监听的实例(RAC 下推荐用 SCAN 名)
执行克隆时 FILE_NAME_CONVERT 的坑
它不是可选项,而是路径映射的强制控制点;漏配或写错会导致文件落盘失败、PDB 卡死:
- 必须覆盖源 PDB 所有数据文件路径,包括
SYSTEM、SYSAUX、UNDOTBS1、用户表空间,不能只写业务路径 - 值是成对出现的字符串替换,比如
('+/DATA/ORCL/','+/DATA/CLONE/'),注意末尾斜杠一致,否则可能生成非法路径 - RAC + ASM 环境下,目标路径需确保所有节点都能访问(比如用
+DATA而非/u01/oradata/...),否则某节点 OPEN 会报ORA-65086
克隆完成后最容易被忽略的收尾动作
刚 OPEN 成功不等于可用,RAC 下尤其要手动补全:
- 检查
V$PDBS状态是否为OPEN,且CON_ID已分配;若为MOUNTED,说明元数据注册失败,需查ALERT.LOG - RAC 环境必须为新 PDB 创建 service(
srvctl add service),否则客户端连接会随机路由到未加载该 PDB 的实例上 - 验证
TEMP表空间是否自动创建:若没生成,需手动ALTER PLUGGABLE DATABASE ADD TEMPFILE,否则排序操作直接报错











