Oracle 数据库迁移到云

Oracle 数据库迁移到云

适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

数据库迁移到云的方案[1]:

方案

  • Zero Downtime Migration (ZDM)
  • Data Pump
  • GoldenGate
  • RMAN
  • Cross-Platform Transportable

详细见:Oracle 零停机迁移方案


2. 迁移方式选择

方式停机时间数据量跨平台
ZDM任意
GoldenGate任意
Data Pump中小
RMAN
TTS

3. Zero Downtime Migration (ZDM)

3.1 概述

  • Oracle 官方工具
  • 物理迁移
  • 零停机

3.2 准备

# 1. 安装 ZDM
$ZDM_HOME/bin/zdmcli install ...

# 2. 配置源/目标

3.3 执行

# 评估
$ZDM_HOME/bin/zdmcli migrate database \
  -sourcesid orcl \
  -sourcenode source-host \
  -targetnode target-host \
  -rsp /tmp/zdm.rsp \
  -eval

# 执行
$ZDM_HOME/bin/zdmcli migrate database \
  -sourcesid orcl \
  -sourcenode source-host \
  -targetnode target-host \
  -rsp /tmp/zdm.rsp

3.4 切换

- ZDM 提示切换
- 应用切换到目标
- 业务恢复

4. GoldenGate

4.1 概述

  • 实时复制
  • 零停机
  • 异构

4.2 架构

源 → Extract → Pump → Replicat → 目标

4.3 配置

# 1. 源启用补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

# 2. Extract
ADD EXTRACT ext1, TRANLOG, BEGIN NOW
ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1

# 3. Pump
ADD EXTRACT pump1, EXTTRAILSOURCE ./dirdat/lt
ADD RMTTRAIL ./dirdat/rt, EXTRACT pump1

# 4. Replicat
ADD REPLICAT rep1, EXTTRAIL ./dirdat/rt

详细见:Oracle GoldenGate 实时复制


5. Data Pump

5.1 适用

  • 中小数据量
  • 跨平台
  • 停机可接受

5.2 导出

expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp 
  FULL=Y PARALLEL=8 COMPRESSION=ALL

5.3 传输

# 上传到对象存储
oci os object put --bucket-name migration --file full.dmp

# 或 scp
scp full.dmp target-host:/tmp/

5.4 导入

impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp 
  FULL=Y PARALLEL=8 TABLE_EXISTS_ACTION=REPLACE

详细见:Oracle Data Pump 详解


6. RMAN 跨平台

6.1 14c+

-- 1. 备份
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

-- 2. CONVERT
RMAN> CONVERT DATABASE 
  NEW DATABASE 'orcl'
  TRANSPORT SCRIPT '/tmp/transport.sql'
  TO PLATFORM 'Linux x86 64-bit';

6.2 跨 Endian

-- Endian 不同的平台
RMAN> CONVERT DATAFILE '/u01/oradata/users01.dbf' 
  FROM PLATFORM 'Solaris[tm] OE (64-bit)'
  TO PLATFORM 'Linux x86 64-bit'
  FORMAT '/u01/oradata/converted/users01.dbf';

7. TTS(Transportable Tablespace)

7.1 适用

  • 大数据量
  • 跨平台
  • 减少停机

7.2 步骤

-- 1. 自包含检查
BEGIN
  DBMS_TTS.TRANSPORT_SET_CHECK('users, tools', TRUE);
END;
/
SELECT * FROM transport_set_violations;

-- 2. READ ONLY
ALTER TABLESPACE users READ ONLY;

-- 3. 导出元数据
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=tts.dmp 
  TRANSPORT_TABLESPACES=users TRANSPORT_FULL_CHECK=Y

-- 4. 复制数据文件到目标

-- 5. CONVERT(跨 Endian)
RMAN> CONVERT DATAFILE '...' FROM PLATFORM '...' TO PLATFORM '...' FORMAT '...';

-- 6. 导入
impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=tts.dmp 
  TRANSPORT_DATAFILES='/u01/oradata/users01.dbf'

-- 7. READ WRITE
ALTER TABLESPACE users READ WRITE;

详细见:Oracle TTS 传输表空间


8. 备份迁移

8.1 RMAN Backup

# 1. 备份源
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

# 2. 传输备份
scp backup-* target-host:/u01/backup/

# 3. 恢复
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;

9. 迁移到 OCI Autonomous

9.1 ZDM

$ZDM_HOME/bin/zdmcli migrate database \
  -target cloud \
  -tdb Autonomous \
  ...

9.2 Data Pump

# 上传到对象存储
oci os object put --bucket-name migration --file full.dmp

# Autonomous 导入
# Console → Data Pump Import

9.3 GoldenGate

- 源 → GoldenGate Hub → Autonomous
- 实时

详细见:Oracle Cloud 部署


10. 验证

10.1 数据完整性

-- 行数
SELECT 'EMPLOYEES', COUNT(*) FROM employees
UNION ALL
SELECT 'DEPARTMENTS', COUNT(*) FROM departments;

-- 对象数
SELECT COUNT(*) FROM dba_objects;

-- 字符集
SELECT * FROM nls_database_parameters;

10.2 业务测试

- 应用连接
- 业务流程
- 性能测试

10.3 性能对比

@?/rdbms/admin/awrddrpt.sql

详细见:Oracle 数据库升级性能评估


11. 回滚

11.1 ZDM

# 回滚
$ZDM_HOME/bin/zdmcli migrate database -jobid <id> -rollback

11.2 GoldenGate

- 反向复制
- 切换回源

11.3 其他

- 备份恢复
- Flashback

12. 常见坑与排错

12.1 数据不一致

- 同步延迟
- 字符集
- 时区

12.2 性能问题

- 网络延迟
- I/O 差异
- 参数调整

12.3 字符集

-- 源
SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';

-- 目标
-- 必须一致

13. 最佳实践

  1. 测试环境验证:先
  2. ZDM 推荐:自动化
  3. GoldenGate 零停机:大型
  4. Data Pump 简单:中小
  5. TTS 大数据:跨平台
  6. 业务低峰:影响小
  7. 回滚预案:必备
  8. 数据验证:完整
  9. 性能测试:对比
  10. 文档化:流程

14. 参考资料

[1] Oracle Cloud Infrastructure Database Migration Guide https://docs.oracle.com/en/cloud/paas/database-migration/