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 同步,需临时禁用外键约束和触发器避免冲突 。
