Oracle 19C 一种PDB刷新同步方法介绍

来源:这里教程网 时间:2026-03-03 21:34:34 作者:

1 环境检查与配置

a)  版本与模式验证

确认源端与目标端数据库版本 12.2,且均开启 本地 UNDO 模式 归档模式 ‌‌

检查字符集和字节序一致性 SELECT USERENV('LANGUAGE') FROM DUAL;   SELECT PLATFORM_ID, PLATFORM_NAME FROM V$DATABASE;  

b)  用户与权限配置

在目标端 CDB 创建同步用户并授权 CREATE USER c##sync_user IDENTIFIED BY password CONTAINER=ALL;   GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSDBA TO c##sync_user;  

c)  网络与存储配置

配置 TNS 连接,确保源端与目标端网络互通

若使用非 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 、注意事项

存储空间预留 :确保目标端存储空间足够容纳全量数据及后续增量日志

网络稳定性 :同步期间需保持源端与目标端网络低延迟、高带宽

约束与触发器处理 :若涉及 OGG 同步,需临时禁用外键约束和触发器避免冲突

相关推荐