克隆本地PDB时源库须为READ ONLY或MOUNTED状态,远程克隆需配置DB Link且目标CDB启用LOCAL_UNDO_ENABLED=TRUE,关键参数如FILE_NAME_CONVERT、STORAGE、CHARACTER SET等影响克隆行为与兼容性。
克隆本地 PDB 时必须确保源 PDB 处于 READ ONLY 或 MOUNTED 状态
oracle 不允许在源 pdb 处于 read write 状态下直接克隆,否则会报错 ora-65122: pluggable database cloned from a pluggable database that is not in mounted or read only state。这不是权限问题,而是 oracle 的一致性保护机制。
实操建议:
- 先执行
ALTER PLUGGABLE DATABASE pdb_source CLOSE;,再ALTER PLUGGABLE DATABASE pdb_source OPEN READ ONLY; - 克隆完成后,记得把源 PDB 切回读写:
ALTER PLUGGABLE DATABASE pdb_source OPEN READ WRITE; - 如果源 PDB 是应用正在使用的生产库,
READ ONLY窗口期要提前协调,避免影响业务
远程克隆 PDB 必须配置数据库链接(Database Link)且目标 CDB 已启用 LOCAL_UNDO_ENABLED=TRUE
远程克隆本质是通过 DB Link 把元数据和数据文件路径信息拉到目标 CDB,再触发后台的文件复制。若目标 CDB 还在使用 shared undo(即 LOCAL_UNDO_ENABLED=FALSE),克隆会失败并提示 ORA-65139: The specified file name does not match the file name used for the source pluggable database —— 这其实是底层 undo 表空间不兼容导致的误报。
实操建议:
- 检查目标 CDB:运行
SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';,值必须为TRUE - DB Link 必须由
SYS用户创建,且使用CONNECT TO ... IDENTIFIED BY ...显式指定远程 PDB 的管理员凭据 - 远程克隆命令中不能省略
@dblink_name,例如:CREATE PLUGGABLE DATABASE pdb_new FROM pdb_source@remote_link;
CREATE PLUGGABLE DATABASE ... FROM 的关键参数差异直接影响克隆行为
同一句 CREATE PLUGGABLE DATABASE 命令,加不加某些子句会导致完全不同的物理操作:是否复制数据文件、是否重命名文件、是否跳过表空间等。
实操建议:
- 加
FILE_NAME_CONVERT:显式指定源/目标数据文件路径映射,避免因目录不存在导致ORA-01119错误;不加则要求源目标目录结构一致 - 加
STORAGE (MAXSIZE ...):限制新 PDB 最大存储配额,防止意外占满磁盘;不加则继承源 PDB 的 storage 设置 - 加
PATH_PREFIX:仅在使用多租户统一文件结构(如 Oracle Managed Files)时需要,否则可能引发ORA-65175
克隆后首次打开 PDB 可能卡住或报 ORA-01219,实际是字符集校验未通过
即使克隆成功,执行 ALTER PLUGGABLE DATABASE pdb_new OPEN; 时卡住几秒后报 ORA-01219: database not open: queries allowed on fixed tables only,这通常不是数据库没起来,而是新 PDB 正在做字符集兼容性检查 —— 特别当源 PDB 使用了非 AL32UTF8 字符集,而目标 CDB 的 NLS_CHARACTERSET 不匹配时。
实操建议:
- 克隆前查清两边字符集:
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'NLS_CHARACTERSET'; - 若不一致,要么改目标 CDB 初始化参数(需重启),要么在克隆语句中显式加
CHARACTER SET ...子句(仅限 12.2+) - 不要靠反复
OPEN重试,等待超时后检查alert.log里是否有charset mismatch相关条目
远程克隆最耗时间的环节从来不是网络带宽,而是目标端对每个数据文件头的校验与重写。哪怕只克隆一个空 PDB,只要数据文件多,OPEN 阶段就可能卡住十几秒 —— 这个延迟容易被误判为失败。










