AutoUpgrade 需手动更新至24.3.0版、严格按analyze→fixups→deploy流程执行,target_version仅指定主版本,升级后须手动升级时区版本和COMPATIBLE参数。
autoupgrade 不是“开箱即用”的一键工具,它依赖精确的配置、版本对齐和前置清理——跳过 analyze 阶段直接 deploy,90% 以上会失败。
autoupgrade.jar 版本必须手动更新,不能用 $ORACLE_HOME 自带的旧版
Oracle 19c 的 $ORACLE_HOME/rdbms/admin/autoupgrade.jar 是随安装包附带的初始版本(如 20.1 或 21.2),但已知存在对 12c/11g 源库识别不准、无效对象漏检、时区升级逻辑错误等问题。官方明确要求从 MOS 下载最新版(截至 2026 年 5 月为 autoupgrade-24.3.0.jar)并替换:
- 下载地址:MOS Note 2485457.1(需 Support Identifier)
- 替换命令:
cp autoupgrade-24.3.0.jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar - 验证方式:
java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -version输出应为24.3.0 - 不替换的后果:analyze 报告中可能不提示
WMSYS.OWM_VSCRIPT_PKG等关键 invalid 对象,deploy 时在catqm.sql阶段直接报 ORA-04043
配置文件里 target_version=19 不等于升级到 19c 最新版
target_version 参数只控制升级目标主版本号,不是补丁级别。实际部署时 AutoUpgrade 会使用 target_home 下 opatch lsinventory 所见的 RU(Release Update)版本。常见误操作:
- 把 19.3.0.0 的 Oracle Home 当作目标,但没打最新 RU(如 19.24.0.0.0),结果升级后
DBA_REGISTRY显示版本仍是 19.3.0.0.0 - 配置写成
upg1.target_version=19.24—— 无效,会被忽略,AutoUpgrade 只认整数主版本 - 正确做法:先在
target_home运行opatch auto <RU_zip>打全补丁,再运行 autoupgrade
analyze 阶段必须人工确认 preupgrade_fixups.sql,不能跳过
执行 java -jar autoupgrade.jar -config config.cfg -mode analyze 后,日志中会生成 preupgrade_fixups.sql 路径(如 /soft/upg_logs/lucifer/preupgrade/preupgrade_fixups.sql)。这个脚本不是“建议”,而是强制修复项:
- 典型内容包含:
ALTER SYSTEM SET compatible='11.2.0' SCOPE=SPFILE(源库 compatible 太低)、DROP PACKAGE WMSYS.OWM_VSCRIPT_PKG(卸载 workspace manager)、EXEC DBMS_DST.BEGIN_PREPARE(26)(时区准备) - 必须在源库以
sysdba身份运行该脚本,且部分语句需重启数据库才生效 - 漏掉
utlrp.sql编译会导致 deploy 卡在 “Compiling invalid objects” 步骤,日志里只显示 “waiting…” 无报错 - 特别注意:如果源库用了 APEX,
preupgrade_fixups.sql通常不处理,得提前运行@?/apex/apxremov.sql,否则 deploy 到 19c 时 APEX 组件注册失败
deploy 后必须立即处理 timezone version 和 COMPATIBLE
AutoUpgrade 完成 deploy 并启动新库后,两个关键项不会自动完成,但直接影响业务可用性:
立即学习“Java免费学习笔记(深入)”;
-
DBA_REGISTRY显示版本为 19.x,但SELECT version FROM v$timezone_file仍为旧值(如 26),而 19c 要求 ≥ 43 —— 必须手动运行DBMS_DST.UPGRADE_DATABASE,否则 SYSTIMESTAMP 在夏令时切换日出错 -
COMPATIBLE参数默认保持源库值(如 11.2.0.4.0),不升级则无法启用 19c 新特性(如 JSON 表函数、SecureFiles 默认加密),且后续打 RU 可能失败 - 升级 COMPATIBLE 前必须确认所有应用兼容,且不可逆;命令为:
ALTER SYSTEM SET compatible='19.0.0' SCOPE=SPFILE,然后重启 - 这两个操作都不在 AutoUpgrade 的 post-upgrade fixup 脚本里,文档里也藏在“Post-Upgrade Tasks”小节末尾,极易被跳过


















