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. 最佳实践
- preupgrade:必做
- 测试:充分
- 备份:升级前
- AutoUpgrade:推荐
- 时区:升级
- 统计信息:收集
- 失效对象:编译
- 回退:预案
- 验证:功能/性能
- 监控:稳定
18. 参考资料
[1] Mike Dietrich, https://blogs.oracle.com/upgrade [2] Oracle Database Upgrade Guide 19c [3] AutoUpgrade Documentation