ITPub博客

首页 > 数据库 > Oracle > Oracle 19C 利用PDB刷新实现迁移

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

原创 Oracle 作者:jason_yehua 时间:2025-05-08 11:57:57 0 删除 编辑

一、环境检查与配置

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包对比关键表数据差异


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31547506/viewspace-3083540/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-05-22

  • 博文量
    122
  • 访问量
    99628