升级Oracle单实例数据库19.3到19.22
- 开源代码
- 2025-08-04 12:12:02

需求
我的Oracle Database Vagrant Box初始版本为19.3,需要升级到最新的RU,当前为19.22。
以下操作时间为为2024年2月5日。
补丁下载补丁下载文档参见MOS文档:Primary Note for Database Proactive Patch Program (Doc ID 888.1)。
补丁安装文档参见文档(链接在下载页面中):Patch 35943157 - Database Release Update 19.22.0.0.240116
也可以从MOS的“Patch & Updates”标签页中下载: 结果中的Patch 35943157即我们需要的:
停止数据库和监听断开所有与数据库的连接,如应用,如管理客户端(Oracle EM, SQL Developer等)。
停止数据库:
shutdown immediate停止监听:
lsnrctl stop 备份Oracle Home参考MOS文档: How to Perform ORACLE_HOME Backup? (Doc ID 565017.1)
以oracle用户执行以下脚本:
# 创建备份目录 mkdir ~/backup # 本例中的ORACLE_HOME为/opt/oracle/product/19c/dbhome_1 cd $ORACLE_HOME # 切换到上一级目录:/opt/oracle/product/19c cd .. # 启动备份 tar -pcvf ~/backup/oracle_home_bkup.tar dbhome_1备份文件约7.4G:
$ ls -l ~/backup/ total 7248532 -rw-r--r--. 1 oracle oinstall 7422494720 Feb 5 13:42 oracle_home_bkup.tar 安装最新版的OPatch下载OPatch 12.2.0.1.41 for DB 19.0.0.0.0 (Jan 2024),约120M。
$ ls -l /vagrant/p6880880_190000_Linux-x86-64.zip -rwxrwxrwx. 1 vagrant vagrant 127629034 Feb 5 13:58 /vagrant/p6880880_190000_Linux-x86-64.zip升级过程参见Oracle数据库升级OPatch全过程。
升级完成后:
$ opatch version OPatch Version: 12.2.0.1.41 OPatch succeeded. 安装OJVM补丁详见MOS 文档:Oracle Recommended Patches – “Oracle JavaVM Component Database PSU and Update” (OJVM PSU and OJVM Update) Patches (Doc ID 1929745.1)
实际下载是从MOS文档:Primary Note for Database Proactive Patch Program (Doc ID 888.1)
然后搜索OJVM即可。补丁约120M:
$ ls -l /vagrant/p35926646_190000_Linux-x86-64.zip -rwxrwxrwx. 1 vagrant vagrant 127451050 Feb 5 14:21 /vagrant/p35926646_190000_Linux-x86-64.zip升级文档参见Patch 35926646 - Oracle JavaVM Component Release Update 19.22.0.0.240116。
PATCHDIR=/home/oracle/patchdir mkdir $PATCHDIR unzip -d $PATCHDIR /vagrant/p35926646_190000_Linux-x86-64.zip cd $PATCHDIR/35926646 opatch prereq CheckConflictAgainstOHWithDetail -ph ./ # 如果上面的先决条件检测通过,则可以安装补丁 opatch apply安装过程如下:
[oracle@oracle-19c-vagrant 35926646]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./ Oracle Interim Patch Installer version 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /opt/oracle/product/19c/dbhome_1 Central Inventory : /opt/oracle/oraInventory from : /opt/oracle/product/19c/dbhome_1/oraInst.loc OPatch version : 12.2.0.1.41 OUI version : 12.2.0.7.0 Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_14-25-44PM_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded. [oracle@oracle-19c-vagrant 35926646]$ opatch apply Oracle Interim Patch Installer version 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. All rights reserved. Oracle Home : /opt/oracle/product/19c/dbhome_1 Central Inventory : /opt/oracle/oraInventory from : /opt/oracle/product/19c/dbhome_1/oraInst.loc OPatch version : 12.2.0.1.41 OUI version : 12.2.0.7.0 Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_14-26-37PM_1.log Verifying environment and performing prerequisite checks... OPatch continues with these patches: 35926646 Do you want to proceed? [y|n] y User Responded with: Y All checks passed. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/opt/oracle/product/19c/dbhome_1') Is the local system ready for patching? [y|n] y User Responded with: Y Backing up files... Applying interim patch '35926646' to OH '/opt/oracle/product/19c/dbhome_1' Patching component oracle.javavm.server, 19.0.0.0.0... Patching component oracle.javavm.server.core, 19.0.0.0.0... Patching component oracle.rdbms.dbscripts, 19.0.0.0.0... Patching component oracle.rdbms, 19.0.0.0.0... Patching component oracle.javavm.client, 19.0.0.0.0... Patch 35926646 successfully applied. Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_14-26-37PM_1.log OPatch succeeded.还有一些后续工作:
connect / as sysdba startup alter pluggable database all open; quit执行安装后脚本,datapatch 是一款新工具,可实现 RDBMS 补丁的补丁后 SQL 操作自动化:
cd $ORACLE_HOME/OPatch ./datapatch -verbose如果都正常,则执行以下脚本:
cd $ORACLE_HOME/rdbms/admin sqlplus /nolog SQL> CONNECT / AS SYSDBA SQL> @utlrp.sql然后关闭数据库。
shutdown immediate这个补丁安装的时间有点长。如果是新库,最好是打完补丁再建库,而非建完库再打补丁。
安装数据库补丁因为我没有GI,所以仅升级数据库就好。
补丁约1.8G:
$ ls -l /vagrant/p35943157_190000_Linux-x86-64.zip -rwxrwxrwx. 1 vagrant vagrant 1817908992 Feb 5 13:29 /vagrant/p35943157_190000_Linux-x86-64.zip解压:
PATCHDIR=/home/oracle/patchdir # 解压完大约3.6G unzip -qd $PATCHDIR /vagrant/p35943157_190000_Linux-x86-64.zip cd $PATCHDIR/35943157 opatch prereq CheckConflictAgainstOHWithDetail -ph ./ # 如果上面的先决条件检测通过,则可以安装补丁 opatch apply先决条件检查确实通过了:
$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./ Oracle Interim Patch Installer version 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /opt/oracle/product/19c/dbhome_1 Central Inventory : /opt/oracle/oraInventory from : /opt/oracle/product/19c/dbhome_1/oraInst.loc OPatch version : 12.2.0.1.41 OUI version : 12.2.0.7.0 Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-10-48PM_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.但第一次安装却失败了,因为空间不够:
[oracle@oracle-19c-vagrant 35943157]$ time opatch apply Oracle Interim Patch Installer version 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. All rights reserved. Oracle Home : /opt/oracle/product/19c/dbhome_1 Central Inventory : /opt/oracle/oraInventory from : /opt/oracle/product/19c/dbhome_1/oraInst.loc OPatch version : 12.2.0.1.41 OUI version : 12.2.0.7.0 Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-12-31PM_1.log Verifying environment and performing prerequisite checks... Prerequisite check "CheckSystemSpace" failed. The details are: Required amount of space(7550.384MB) is not available. UtilSession failed: Prerequisite check "CheckSystemSpace" failed. Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-12-31PM_1.log OPatch failed with error code 73空间问题处理完后,再次安装:
$ time opatch apply Oracle Interim Patch Installer version 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. All rights reserved. Oracle Home : /opt/oracle/product/19c/dbhome_1 Central Inventory : /opt/oracle/oraInventory from : /opt/oracle/product/19c/dbhome_1/oraInst.loc OPatch version : 12.2.0.1.41 OUI version : 12.2.0.7.0 Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-41-25PM_1.log Verifying environment and performing prerequisite checks... OPatch continues with these patches: 35943157 Do you want to proceed? [y|n] y User Responded with: Y All checks passed. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system. (Oracle Home = '/opt/oracle/product/19c/dbhome_1') Is the local system ready for patching? [y|n] y User Responded with: Y Backing up files... Applying interim patch '35943157' to OH '/opt/oracle/product/19c/dbhome_1' ApplySession: Optional component(s) [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.crypto.rsf, 19.0.0.0.0 ] , [ oracle.pg4mq, 19.0.0.0.0 ] , [ oracle.precomp.companion, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.oid.client, 19.0.0.0.0 ] , [ oracle.xdk.companion, 19.0.0.0.0 ] , [ oracle.options.olap.api, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.ons.eons.bwcompat, 19.0.0.0.0 ] , [ oracle.ons.cclient, 19.0.0.0.0 ] , [ oracle.sdo.companion, 19.0.0.0.0 ] , [ oracle.net.cman, 19.0.0.0.0 ] , [ oracle.pg4appc, 19.0.0.0.0 ] , [ oracle.jdk, 1.8.0.191.0 ] not present in the Oracle Home or a higher version is found. Patching component oracle.rdbms, 19.0.0.0.0... Patching component oracle.rdbms.util, 19.0.0.0.0... Patching component oracle.rdbms.rsf, 19.0.0.0.0... Patching component oracle.assistants.acf, 19.0.0.0.0... Patching component oracle.assistants.deconfig, 19.0.0.0.0... Patching component oracle.assistants.server, 19.0.0.0.0... Patching component oracle.blaslapack, 19.0.0.0.0... Patching component oracle.buildtools.rsf, 19.0.0.0.0... Patching component oracle.ctx, 19.0.0.0.0... Patching component oracle.dbdev, 19.0.0.0.0... Patching component oracle.dbjava.ic, 19.0.0.0.0... Patching component oracle.dbjava.jdbc, 19.0.0.0.0... Patching component oracle.dbjava.ucp, 19.0.0.0.0... Patching component oracle.duma, 19.0.0.0.0... Patching component oracle.javavm.client, 19.0.0.0.0... Patching component oracle.ldap.owm, 19.0.0.0.0... Patching component oracle.ldap.rsf, 19.0.0.0.0... Patching component oracle.ldap.security.osdt, 19.0.0.0.0... Patching component oracle.marvel, 19.0.0.0.0... Patching component oracle.network.rsf, 19.0.0.0.0... Patching component oracle.odbc.ic, 19.0.0.0.0... Patching component oracle.ons, 19.0.0.0.0... Patching component oracle.ons.ic, 19.0.0.0.0... Patching component oracle.oracore.rsf, 19.0.0.0.0... Patching component oracle.perlint, 5.28.1.0.0... Patching component oracle.precomp.common.core, 19.0.0.0.0... Patching component oracle.precomp.rsf, 19.0.0.0.0... Patching component oracle.rdbms.crs, 19.0.0.0.0... Patching component oracle.rdbms.dbscripts, 19.0.0.0.0... Patching component oracle.rdbms.deconfig, 19.0.0.0.0... Patching component oracle.rdbms.oci, 19.0.0.0.0... Patching component oracle.rdbms.rsf.ic, 19.0.0.0.0... Patching component oracle.rdbms.scheduler, 19.0.0.0.0... Patching component oracle.rhp.db, 19.0.0.0.0... Patching component oracle.sdo, 19.0.0.0.0... Patching component oracle.sdo.locator.jrf, 19.0.0.0.0... Patching component oracle.sqlplus, 19.0.0.0.0... Patching component oracle.sqlplus.ic, 19.0.0.0.0... Patching component oracle.wwg.plsql, 19.0.0.0.0... Patching component oracle.xdk.rsf, 19.0.0.0.0... Patching component oracle.install.deinstalltool, 19.0.0.0.0... Patching component oracle.sdo.locator, 19.0.0.0.0... Patching component oracle.rdbms.install.plugins, 19.0.0.0.0... Patching component oracle.dbtoolslistener, 19.0.0.0.0... Patching component oracle.xdk, 19.0.0.0.0... Patching component oracle.rdbms.drdaas, 19.0.0.0.0... Patching component oracle.xdk.xquery, 19.0.0.0.0... Patching component oracle.rdbms.rman, 19.0.0.0.0... Patching component oracle.network.client, 19.0.0.0.0... Patching component oracle.rdbms.hs_common, 19.0.0.0.0... Patching component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0... Patching component oracle.oraolap.dbscripts, 19.0.0.0.0... Patching component oracle.mgw.common, 19.0.0.0.0... Patching component oracle.rdbms.dv, 19.0.0.0.0... Patching component oracle.ldap.ssl, 19.0.0.0.0... Patching component oracle.xdk.parser.java, 19.0.0.0.0... Patching component oracle.ctx.rsf, 19.0.0.0.0... Patching component oracle.rdbms.lbac, 19.0.0.0.0... Patching component oracle.rdbms.hsodbc, 19.0.0.0.0... Patching component oracle.ctx.atg, 19.0.0.0.0... Patching component oracle.oraolap, 19.0.0.0.0... Patching component oracle.oraolap.api, 19.0.0.0.0... Patching component oracle.odbc, 19.0.0.0.0... Patching component oracle.ldap.client, 19.0.0.0.0... Patching component oracle.nlsrtl.rsf, 19.0.0.0.0... Patching component oracle.rdbms.install.common, 19.0.0.0.0... Patching component oracle.ovm, 19.0.0.0.0... Patching component oracle.network.listener, 19.0.0.0.0... Patching component oracle.ldap.rsf.ic, 19.0.0.0.0... Patching component oracle.javavm.server, 19.0.0.0.0... Patching component oracle.precomp.lang, 19.0.0.0.0... Patching component oracle.precomp.common, 19.0.0.0.0... Patching component oracle.jdk, 1.8.0.201.0... Patch 35943157 successfully applied. Sub-set patch [29517242] has become inactive due to the application of a super-set patch [35943157]. Please refer to Doc ID 2161861.1 for any possible further required actions. Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-41-25PM_1.log OPatch succeeded. real 36m32.647s user 20m16.850s sys 9m43.814s成功,耗时半小时。
以上安装是交互式的,中间有两处需要用户输入Y或N。可以指定-silent选项以静默运行。
补丁安装后的操作:
connect / as sysdba startup alter pluggable database all open; quit执行脚本:
cd $ORACLE_HOME/OPatch ./datapatch -verbose输出如下:
$ time ./datapatch -verbose SQL Patching tool version 19.22.0.0.0 Production on Mon Feb 5 21:09:00 2024 Copyright (c) 2012, 2024, Oracle. All rights reserved. Log file for this invocation: /opt/oracle/cfgtoollogs/sqlpatch/sqlpatch_5704_2024_02_05_21_09_00/sqlpatch_invocation.log Connecting to database...OK Gathering database info...done Note: Datapatch will only apply or rollback SQL fixes for PDBs that are in an open state, no patches will be applied to closed PDBs. Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation (Doc ID 1585822.1) Bootstrapping registry and package to current versions...done Determining current state...done Current state of interim SQL patches: Interim patch 35926646 (OJVM RELEASE UPDATE: 19.22.0.0.240116 (35926646)): Binary registry: Installed PDB CDB$ROOT: Applied successfully on 05-FEB-24 02.55.32.207669 PM PDB ORCLPDB1: Applied successfully on 05-FEB-24 02.55.33.974523 PM PDB PDB$SEED: Applied successfully on 05-FEB-24 02.55.33.368845 PM Current state of release update SQL patches: Binary registry: 19.22.0.0.0 Release_Update 240104023954: Installed PDB CDB$ROOT: Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 11-JAN-24 04.17.24.530288 PM PDB ORCLPDB1: Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 11-JAN-24 04.24.22.690150 PM PDB PDB$SEED: Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 11-JAN-24 04.24.22.690150 PM Adding patches to installation queue and performing prereq checks...done Installation queue: For the following PDBs: CDB$ROOT PDB$SEED ORCLPDB1 No interim patches need to be rolled back Patch 35943157 (Database Release Update : 19.22.0.0.240116 (35943157)): Apply from 19.3.0.0.0 Release_Update 190410122720 to 19.22.0.0.0 Release_Update 240104023954 No interim patches need to be applied Installing patches... Patch installation complete. Total patches installed: 3 Validating logfiles...done Patch 35943157 apply (pdb CDB$ROOT): SUCCESS logfile: /opt/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_ORCLCDB_CDBROOT_2024Feb05_21_09_27.log (no errors) Patch 35943157 apply (pdb PDB$SEED): SUCCESS logfile: /opt/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_ORCLCDB_PDBSEED_2024Feb05_21_16_01.log (no errors) Patch 35943157 apply (pdb ORCLPDB1): SUCCESS logfile: /opt/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_ORCLCDB_ORCLPDB1_2024Feb05_21_16_01.log (no errors) SQL Patching tool complete on Mon Feb 5 21:27:20 2024 real 18m19.684s user 0m33.220s sys 0m3.595s这里有一个小插曲,第一次执行datapatch 时非常慢,我强行中断了。
然后回家又做了一遍,这次快些了,只用了18分钟。
执行datapatch时,解压的数据库补丁我已经删除了,说明其不需要了。
其他RMAN catalog如果有,也需要升级。我没有,此处略。 还有一些可能需要升级的,详见文档。
验证升级成功 SQL> select banner_full from v$version; BANNER_FULL -------------------------------------------------------------------------------- Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.22.0.0.0 SQL> select banner_legacy from v$version; BANNER_LEGACY -------------------------------------------------------------------------------- Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production 清理 # 删除备份的Oracle Home rm ~/backup/oracle_home_bkup.tar # 删除解压的补丁包 PATCHDIR=/home/oracle/patchdir rm -fr $PATCHDIR升级Oracle单实例数据库19.3到19.22由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“升级Oracle单实例数据库19.3到19.22”