Oracle 19C 利用PDB刷新实现迁移

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

一、环境检查与配置 1.版本与模式验证 确认源端与目标端数据库版本 ≥12.2 检查字符集和字节序一致性

SELECT USERENV('LANGUAGE') FROM DUAL;  
SELECT PLATFORM_ID, PLATFORM_NAME FROM V$DATABASE;

2.用户与权限配置 在目标端 CDB 创建同步用户并授权

CREATE USER c##sync_user IDENTIFIED BY password CONTAINER=ALL;  
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE, SYSDBA TO c##sync_user;

3.网络与存储配置 配置 TNS 连接,确保源端与目标端网络互通。 若使用非 OMF 存储,设置PDB_FILE_NAME_CONVERT?参数以转换文件路径:

ALTER SYSTEM SET PDB_FILE_NAME_CONVERT='+DATA/SOURCE','+DATA/TARGET' SCOPE=SPFILE;

二、初始化同步准备 1.创建可刷新 PDB,在目标端执行以下命令建立同步链路:

CREATE PLUGGABLE DATABASE target_pdb FROM source_pdb@source_dblink  
REFRESH MODE MANUAL  
FILE_NAME_CONVERT=('+DATA/SOURCE','+DATA/TARGET');

source_dblink需指向源端 CDB 2.第一次全量同步,打开目标端 PDB 并执行初始数据同步

ALTER PLUGGABLE DATABASE target_pdb OPEN;  
ALTER PLUGGABLE DATABASE target_pdb REFRESH;

此操作将完整复制源端 PDB 数据至目标端 3.前置修复脚本执行 使用pre-upgrade工具检查并修复兼容性问题

源端执行检查
@preupgrd.sql  
根据报告修复问题
@preupgrade_fixups.sql

确保组件状态为:VALID 三、数据一致性验证 1.基础对象校验,对比源端与目标端表空间及对象数量

SELECT TABLESPACE_NAME FROM CDB_TABLESPACES WHERE CON_ID=PDB_ID;  
SELECT COUNT(*) FROM DBA_OBJECTS;

2.增量同步验证,手动触发增量刷新并监控进度:

ALTER PLUGGABLE DATABASE target_pdb REFRESH;

3.查看刷新进度 

SELECT * FROM V$SESSION_LONGOPS WHERE OPNAME LIKE '%refresh%';

4.正式割接与数据验证 最后一次增量同步,停止源端 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;

5.数据一致性验证 检查表空间与对象数量:

SELECT TABLESPACE_NAME FROM CDB_TABLESPACES WHERE CON_ID=PDB_ID;  
SELECT COUNT(*) FROM DBA_OBJECTS;

使用DBMS_COMPARISON包对比关键表数据差异

相关推荐