Oracle Kamus 升级迁移实战

Oracle Kamus 升级迁移实战

来源:张乐奕 (Kamus) / dbform.com 适用版本:Oracle Database 11g+ 文档版本:v1.0 / 2026-07-22


1. 概述

Kamus 对升级迁移有丰富实战经验[1]。

详细见:Oracle 数据库版本升级Oracle 数据库迁移方案选择


2. 升级路径

2.1 当前推荐

- 11g → 19c
- 12c → 19c
- 18c → 19c
- 19c → 23ai

2.2 Kamus 建议

- 跟随 LTS
- 19c 长期支持
- 评估 23ai

2.3 升级前

- 评估
- 测试
- 备份
- 计划

3. 升级方式

3.1 DBUA

- 图形化
- 简单
- 适合小库

3.2 手动

- catctl.pl
- 控制
- 适合大库

3.3 Data Guard 滚动

- 零停机
- 复杂
- 关键业务

3.4 Kamus 推荐

- 关键业务:Data Guard
- 普通:DBUA
- 大库:手动

详细见:Oracle Data Guard 滚动升级详解


4. 升级前检查

4.1 preupgrade

sqlplus / as sysdba
@?/rdbms/admin/utlu112i.sql  # 11g
@?/rdbms/admin/preupgrd.sql  # 12c
$ORACLE_HOME/rdbms/admin/preupgrade.jar  # 19c

4.2 报告

- 警告
- 推荐
- 必做

4.3 修复

- 按报告修复
- 验证

4.4 Kamus 强调

- preupgrade 必做
- 修复所有警告
- 测试

5. DBUA 升级

5.1 启动

$NEW_ORACLE_HOME/bin/dbua

5.2 选项

- 升级数据库
- 选项
- 并行
- 时区

5.3 执行

- 自动
- 进度
- 报告

5.4 验证

- 版本
- 组件
- 对象

6. 手动升级

6.1 19c 流程

# 1. 关闭
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;

# 2. 切换 ORACLE_HOME
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1

# 3. 启动
sqlplus / as sysdba
STARTUP UPGRADE;

# 4. 升级
@?/rdbms/admin/catctl.pl ?/rdbms/admin/catupgrd.sql

# 5. 后置
@?/rdbms/admin/utlrp.sql
@?/rdbms/admin/catuppst.sql

6.2 验证

SELECT version FROM v$instance;
SELECT comp_name, version FROM dba_registry;

6.3 Kamus 经验

- 并行
- 监控
- 验证

7. Data Guard 滚动升级

7.1 流程

1. 升级备库软件
2. 启动备库(升级数据字典)
3. Switchover
4. 升级原主库软件
5. 启动原主库
6. Switchover 回

7.2 Kamus 优势

- 零停机
- 风险低
- 可回退

7.3 验证

- 数据
- 应用
- 性能

详细见:Oracle Data Guard 升级详解


8. 迁移方式

8.1 Data Pump

- 逻辑
- 跨平台
- 适合中小

8.2 RMAN

- 物理
- 同平台
- 适合大库

8.3 GoldenGate

- 实时
- 零停机
- 复杂

8.4 ZDM

- 云迁移
- 自动化
- OCI

8.5 Kamus 建议

- 评估数据量
- 停机窗口
- 平台

详细见:Oracle 数据库迁移方案选择


9. 时区升级

9.1 检查

SELECT * FROM v$timezone_file;

9.2 升级

# 19c
@?/rdbms/admin/utltz_upgrade.sql

9.3 Kamus 警告

- 必做
- 影响 TIMESTAMP
- 测试

10. 统计信息

10.1 升级后

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
EXEC DBMS_STATS.GATHER_DATABASE_STATS;

10.2 Kamus 建议

- 升级后立即
- CBO 准确
- 验证

11. 失效对象

11.1 检查

SELECT owner, object_name, object_type 
FROM dba_objects WHERE status='INVALID';

11.2 编译

@?/rdbms/admin/utlrp.sql

11.3 验证

- 无失效
- 测试

12. 回退

12.1 DBUA

- 自动回退
- 或备份恢复

12.2 手动

- 旧 HOME
- 备份恢复

12.3 Data Guard

- Switchover 回
- 简单

12.4 Kamus 建议

- 回退预案
- 测试
- 文档

13. 升级后验证

13.1 功能

- 应用
- 业务
- 数据

13.2 性能

- AWR 对比
- TOP SQL
- 优化

13.3 稳定性

- 监控
- 一周观察
- 优化

14. Kamus 案例

14.1 案例:11g → 19c

- Data Guard 滚动
- 零停机
- 成功

14.2 案例:跨平台迁移

- Data Pump
- 测试
- 验证

14.3 案例:性能回归

- AWR 对比
- CBO 变化
- Baseline

15. 最佳实践

  1. preupgrade:必做
  2. 测试:演练
  3. 备份:升级前
  4. Data Guard:零停机
  5. 时区:升级
  6. 统计信息:收集
  7. 失效对象:编译
  8. 回退:预案
  9. 验证:功能/性能
  10. 监控:稳定

16. 参考资料

[1] Kamus, “升级迁移实战”, http://www.dbform.com [2] Oracle Database Upgrade Guide 19c