autoupgrade.jar不支持真正在线升级,数据库必须停机;必须手动更新为24.3.0版本,target_version仅设主版本19,preupgrade_fixups.sql须人工执行,deploy阶段需手动处理compatible和时区参数。

autoupgrade.jar 不支持真正在线升级,数据库必须停机。所谓“可读不锁库”仅适用于 analyze 阶段;deploy 阶段会强制关闭实例、启动 upgrade 模式、编译无效对象,全程不可用。
autoupgrade.jar 必须手动升级到 24.3.0 版本
Oracle 19c 自带的 $ORACLE_HOME/rdbms/admin/autoupgrade.jar 是旧版(如 21.2 或 22.5),对 12c 源库识别不准,尤其漏检 wmsys.owm_vscript_pkg 等关键 invalid 对象,导致 deploy 阶段在 catqm.sql 报 ORA-04043 直接中断。
- 从 MOS Note 2485457.1 下载
autoupgrade-24.3.0.jar(需有效 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日志里不会提示 workspace manager 相关问题,但deploy必败
target_version 只认主版本号,不控制补丁级别
target_version=19 是唯一合法写法;写成 19.24 会被忽略,AutoUpgrade 完全不解析小数点后内容。
- 真实目标版本由
target_home下opatch lsinventory所见的 RU 决定(如19.24.0.0.0) - 必须先在
target_home打全最新 RU 补丁(如 Patch 29585399),再运行analyze - 若
target_home仍是19.3.0.0,升级后DBA_REGISTRY显示的仍是19.3.0.0.0,而非预期的19.24.0.0.0
preupgrade_fixups.sql 必须人工执行,不能跳过
该脚本不是建议清单,而是强制修复项。跳过等于在 deploy 阶段埋雷。
- 路径示例:
/soft/upg_logs/lucifer/preupgrade/preupgrade_fixups.sql - 典型语句包括:
ALTER SYSTEM SET compatible='11.2.0' SCOPE=SPFILE、DROP PACKAGE WMSYS.OWM_VSCRIPT_PKG、EXEC DBMS_DST.BEGIN_PREPARE(26) - 必须在源库以
SYS身份执行,部分语句需重启生效 - 常见遗漏:未卸载 workspace manager → deploy 卡在
catqm.sql;未调用DBMS_DST→ 时区升级失败
deploy 阶段需手动处理 COMPATIBLE 和时区参数
AutoUpgrade 不自动设置 COMPATIBLE,也不自动完成时区升级,这两项必须人工干预。
-
COMPATIBLE必须在deploy前设为 ≥12.2.0(12c 源库最低要求),否则catupgrd.sql会报错退出 - 时区升级需分三步:
BEGIN_PREPARE→UPGRADE→END_UPGRADE,且中间不能重启;preupgrade_fixups.sql仅含第一步,后两步需人工补全 -
deploy启动后若发现COMPATIBLE过低或时区未 prepare,会直接中止并留一堆未清理的临时目录
preupgrade_fixups.sql 和时区后续步骤)必须在 deploy 前完成,且不能依赖 AutoUpgrade 自动触发——它只负责执行,不负责判断是否该执行。











