1 、 环境检查与配置
a) 版本与模式验证
q 确认源端与目标端数据库版本 ≥ 12.2,且均开启 本地 UNDO 模式 和 归档模式
q 检查字符集和字节序一致性
SELECT USERENV('LANGUAGE') FROM DUAL;
SELECT PLATFORM_ID, PLATFORM_NAME FROM V$DATABASE;
b) 用户与权限配置
q 在目标端 CDB 创建同步用户并授权
CREATE USER c##sync_user IDENTIFIED BY password CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSDBA TO c##sync_user;
c) 网络与存储配置
q 配置 TNS 连接,确保源端与目标端网络互通
q 若使用非 OMF 存储,设置PDB_FILE_NAME_CONVERT参数以转换文件路径
ALTER SYSTEM SET PDB_FILE_NAME_CONVERT='+DATA/SOURCE','+DATA/TARGET' SCOPE=SPFILE;
2 、初始化同步准备
创建可刷新PDB , 在目标端执行以下命令建立同步链路
CREATE PLUGGABLE DATABASE target_pdb FROM source_pdb@source_dblink
REFRESH MODE MANUAL
FILE_NAME_CONVERT=('+DATA/SOURCE','+DATA/TARGET');
source_dblink需指向源端CDB
全量同步 , 打开目标端PDB并执行初始数据同步
ALTER PLUGGABLE DATABASE target_pdb OPEN;
ALTER PLUGGABLE DATABASE target_pdb REFRESH;
此操作将完整复制源端PDB数据至目标端
前置修复脚本执行
使用pre-upgrade工具检查并修复兼容性问题
# 源端执行检查
@preupgrd.sql
# 根据报告修复问题
@preupgrade_fixups.sql
确保组件状态为VALID
3 、数据一致性校验
基础对象校验 , 对比源端与目标端表空间及对象数量
SELECT TABLESPACE_NAME FROM CDB_TABLESPACES WHERE CON_ID=PDB_ID;
SELECT COUNT(*) FROM DBA_OBJECTS;
增量同步验证 , 手动触发增量刷新并监控进度:
ALTER PLUGGABLE DATABASE target_pdb REFRESH;
查看刷新进度
SELECT * FROM V$SESSION_LONGOPS WHERE OPNAME LIKE '%refresh%';
正式割接与数据验证
最后一次增量同步 , 停止源端PDB写入:
ALTER PLUGGABLE DATABASE source_pdb CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE source_pdb OPEN READ ONLY;
在目标端执行最终刷新:
ALTER PLUGGABLE DATABASE target_pdb REFRESH PARALLEL 4; ;
切换为读写模式 , 关闭刷新功能并激活目标 PDB
ALTER PLUGGABLE DATABASE target_pdb CLOSE;
ALTER PLUGGABLE DATABASE target_pdb OPEN READ WRITE;
数据一致性验证
检查表空间与对象数量:
SELECT TABLESPACE_NAME FROM CDB_TABLESPACES WHERE CON_ID=PDB_ID;
SELECT COUNT(*) FROM DBA_OBJECTS;
使用 DBMS_COMPARISON 包对比关键表数据差异
4 、注意事项
q 存储空间预留 :确保目标端存储空间足够容纳全量数据及后续增量日志 。
q 网络稳定性 :同步期间需保持源端与目标端网络低延迟、高带宽 。
q 约束与触发器处理 :若涉及 OGG 同步,需临时禁用外键约束和触发器避免冲突 。