Oracle Mike Dietrich 升级最佳实践

Oracle Mike Dietrich 升级最佳实践

来源:Mike Dietrich / blogs.oracle.com/upgrade 适用版本:Oracle Database 11g+ 文档版本:v1.0 / 2026-07-22


1. 关于 Mike Dietrich

Mike Dietrich,Oracle 升级团队核心成员[1]。

  • 博客:blogs.oracle.com/upgrade
  • Oracle 升级权威
  • 大量升级实战经验

2. Mike 升级哲学

2.1 核心原则

- 测试充分
- 备份优先
- 渐进升级
- 评估风险

2.2 推荐路径

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

2.3 长期支持

- 19c LTS
- 23ai LTS
- 跟随

3. 升级前准备

3.1 preupgrade

# 19c
$NEW_HOME/rdbms/admin/preupgrade.jar -text

# 或
sqlplus / as sysdba
@?/rdbms/admin/preupgrd.sql

3.2 报告

- 警告
- 推荐
- 必做

3.3 修复

- 按报告修复
- 验证
- 记录

3.4 Mike 强调

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

4. 升级方式

4.1 DBUA

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

4.2 手动

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

4.3 Data Guard 滚动

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

4.4 AutoUpgrade

- 19c+ 工具
- 自动化
- 推荐

4.5 Mike 推荐

- AutoUpgrade
- 或 DBUA
- 关键:Data Guard

5. AutoUpgrade

5.1 配置

# 配置文件
cat > /tmp/upg.cfg <<EOF
upg1.sid=prod
upg1.source_home=/u01/app/oracle/product/11.2.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.start_time=NOW
EOF

5.2 分析

java -jar autoupgrade.jar -config /tmp/upg.cfg -mode analyze

5.3 部署

java -jar autoupgrade.jar -config /tmp/upg.cfg -mode deploy

5.4 Mike 优势

- 自动化
- 多库
- 监控

6. 手动升级

6.1 19c 流程

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

# 2. 切换 HOME
export ORACLE_HOME=$NEW_HOME

# 3. 启动
STARTUP UPGRADE;

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

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

6.2 并行

@?/rdbms/admin/catctl.pl -n 8 ?/rdbms/admin/catupgrd.sql

6.3 Mike 建议

- 并行
- 监控
- 评估

7. 时区升级

7.1 检查

SELECT * FROM v$timezone_file;

7.2 升级

@?/rdbms/admin/utltz_upgrade.sql

7.3 Mike 警告

- 必做
- 影响 TIMESTAMP
- 测试

8. 统计信息

8.1 升级后

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
EXEC DBMS_STATS.GATHER_DATABASE_STATS;

8.2 Mike 建议

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

9. 失效对象

9.1 检查

SELECT count(*) FROM dba_objects WHERE status='INVALID';

9.2 编译

@?/rdbms/admin/utlrp.sql

9.3 验证

- 无失效
- 测试

10. 升级后验证

10.1 组件

SELECT comp_name, version, status FROM dba_registry;

10.2 数据库

SELECT version, status FROM v$instance;

10.3 功能

- 应用
- 业务
- 数据

11. 性能验证

11.1 AWR 对比

- 升级前 AWR
- 升级后 AWR
- 对比

11.2 TOP SQL

- 性能回归
- 优化
- Baseline

11.3 Mike 强调

- 性能验证
- 一周观察
- 优化

12. 回退

12.1 DBUA

- 自动回退
- 或备份恢复

12.2 手动

- 旧 HOME
- 备份恢复

12.3 Data Guard

- Switchover 回
- 简单

12.4 Mike 建议

- 回退预案
- 测试
- 文档

13. 升级风险

13.1 初始化参数

- 废弃参数
- 新参数
- 评估

13.2 字符集

- 检查
- 评估

13.3 已废弃特性

- 检查
- 评估
- 替代

13.4 CBO 变化

- 执行计划变化
- Baseline
- 监控

13.5 Mike 警告

- 评估风险
- 测试
- 回退预案

14. Mike 案例

14.1 案例:11g → 19c

- AutoUpgrade
- 测试充分
- 成功

14.2 案例:性能回归

- CBO 变化
- Baseline
- 优化

14.3 案例:失效对象

- utlrp
- 验证
- 修复

15. 升级清单

15.1 准备

- [ ] preupgrade
- [ ] 修复警告
- [ ] 备份
- [ ] 测试

15.2 执行

- [ ] 升级
- [ ] 时区
- [ ] 统计信息
- [ ] 编译失效

15.3 验证

- [ ] 组件
- [ ] 功能
- [ ] 性能
- [ ] 监控

16. Mike 名言

"Test, test, test"
"Backup before upgrade"
"Don't rush"

17. 最佳实践

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

18. 参考资料

[1] Mike Dietrich, https://blogs.oracle.com/upgrade [2] Oracle Database Upgrade Guide 19c [3] AutoUpgrade Documentation