Ubuntu上升级Oracle版本的正确方法与实施路径

一、先确认具体的升级类型
- 软件包更新:仅更新客户端、管理工具或已安装组件的小版本,通常不涉及数据库数据字典升级,也不会改变核心功能版本。
- 补丁更新:安装RUs/MRPs/一次性补丁,主要用于修复已知缺陷和安全漏洞,数据库主版本号一般不会变化。
- 数据库版本升级:将数据库从旧版本(如12.2/19c)升级到新版本(如23ai),这一过程会涉及数据字典迁移以及兼容性调整。
二、Oracle升级前的准备工作
- 备份与回退方案:建议使用RMAN执行全库和归档日志备份,或导出关键业务数据;同时准备可回退的还原点/闪回机制,或者提前创建完整克隆环境,确保升级失败时可快速恢复。
- 认证与兼容性:在My Oracle Support中核实操作系统、硬件平台及第三方应用对目标版本的兼容支持,并仔细阅读新版本的行为变更/弃用特性说明。
- 新Oracle Home:建议在新目录中安装目标版本软件,采用异机/异目录升级(out-of-place)方式,这样更利于回退、测试以及并行维护。
- 补丁就绪:在新的Oracle Home中先应用最新**Release Update(RU)与Monthly Recommended Patches(MRP)**,再进行数据库升级,可提高稳定性并减少已知问题。
- 多租户要求:从23ai开始仅支持CDB架构;如果当前环境仍是非CDB,则需要先转换为PDB,再插入到目标CDB中完成后续升级。
三、安装新版Oracle软件的操作步骤
- 获取介质:从Oracle官网下载适用于目标版本的Linux x86-64安装介质(ZIP/压缩包或RPM)。在Ubuntu系统中,可直接解压ZIP并运行runInstaller;如果使用RPM,也可以借助alien将其转换为DEB后安装(示例:sudo alien -d --scripts file.rpm;sudo dpkg -i file.deb)。
- 安装要点:安装时选择“仅安装数据库软件”,并指定新的ORACLE_HOME和Oracle Inventory目录;安装结束后,根据提示使用root权限执行orainstRoot.sh与root.sh。
四、执行Oracle数据库版本升级
- 方式A(推荐)AutoUpgrade:从新Oracle Home的**$ORACLE_HOME/bin获取最新AutoUpgrade**(MOS:Doc ID 2485457.1)。创建简化配置文件(如:upg.cfg,包含global.db_name、source_home、target_home、run_utlrp等参数),然后依次执行:
- 分析阶段:ja va -jar autoupgrade.jar -config upg.cfg -mode analyze
- 修复问题后部署:ja va -jar autoupgrade.jar -config upg.cfg -mode deploy
- 在默认配置下,如果升级失败,系统通常会自动利用闪回数据库回退到升级前状态(企业版特性)。
- 方式B DBUA:运行dbua(图形界面或字符界面),根据向导完成预检查、升级执行及后处理流程,适合需要可视化操作和较高自动化程度的场景。
- 方式C 手动升级(不推荐,除非对流程非常熟悉):
- 启动到升级模式:STARTUP UPGRADE
- 执行升级脚本:@?/rdbms/admin/catupgrd.sql
- 编译无效对象:@?/rdbms/admin/utlrp.sql
- 按需提升兼容级别:ALTER SYSTEM SET COMPATIBLE=‘<新版本>’ SCOPE=SPFILE; 重启后生效
- 升级完成后重启数据库并进行验证。
五、升级后的验证与常见问题排查
- 版本与组件:执行SELECT * FROM v$version; 以及 SELECT * FROM product_component_version;,确认Oracle新版本信息及各组件状态是否正常。
- 无效对象与日志:运行@?/rdbms/admin/utlrp.sql重新编译无效对象;同时检查**$ORACLE_BASE/cfgtoollogs/(DBUA)或$ORACLE_HOME/cfgtoollogs/catupgrd/**(手动)日志中是否存在报错或异常信息。
- 客户端与连接:数据库升级后,建议同步更新Oracle Instant Client/客户端到相同或兼容版本,并检查tnsnames.ora/sqlnet.ora及连接串配置;如有需要,还应同步调整应用侧的JDBC/ODBC驱动版本。
- 性能与回归:建议至少保留31天AWR基线,并结合SQL Performance Analyzer和Database Replay评估性能变化与SQL回归情况;如有必要,可通过SQL Plan Management来稳定执行计划。
