Oracle 19c数据库升级PSU版本及Patch安装操作指南
前言
本文适用于Oracle 19c RAC(Real Application Clusters)环境,详细记录了从低版本升级至19.9.0版本的完整流程,以及针对大表分区操作报错(ORA-600:[kkpapDIPObjNum1])的临时补丁Patch 31667096安装步骤。操作过程需在两个节点依次执行,核心前提为OPatch版本需≥12.2.0.1.19,全程需严格区分grid、oracle、root用户权限,避免权限不足导致操作失败。
一、Oracle 19c升级至19.9版本
1.1 前提条件:OPatch工具升级
升级19.9版本前,需先确保grid和oracle用户的OPatch版本≥12.2.0.1.19,以下是OPatch升级步骤:
操作步骤:
- 上传OPatch安装包
p6880880_190000_Linux-x86-64.zip至所有节点的/tmp目录。 - 分别以grid和oracle用户登录节点1,解压安装包至各自的
$ORACLE_HOME目录:# grid用户解压 [grid@tbase1 tmp]$ unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME# oracle用户解压 [oracle@tbase1 tmp]$ unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME - 验证OPatch版本(两个用户均需执行):
# grid用户验证 [grid@tbase1 ~]$ $ORACLE_HOME/OPatch/opatch version # 预期输出:OPatch Version: 12.2.0.1.40(需≥12.2.0.1.19) # OPatch succeeded.# oracle用户验证 [oracle@tbase1 ~]$ $ORACLE_HOME/OPatch/opatch version # 预期输出:OPatch Version: 12.2.0.1.40 # OPatch succeeded. - 节点2重复上述步骤,确保两个节点的grid和oracle用户OPatch版本均满足要求。
1.2 补丁一致性检查(升级前状态确认)
在应用升级补丁前,需检查当前grid和oracle用户的Oracle Home已安装补丁状态,留存基线信息:
# grid用户执行(节点1、2均需执行)
[grid@tbase1 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME# oracle用户执行(节点1、2均需执行)
[oracle@tbase1 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
注意:保存执行结果,便于后续对比补丁是否成功应用。
1.3 升级补丁上传与解压
本次升级使用补丁包p31750108_190000_Linux-x86-64.zip,操作如下:
操作步骤:
- 以root用户在节点1创建补丁目录并授权:
[root@tbase1 /]# mkdir /opatch [root@tbase1 /]# chown -R grid:oinstall /opatch - 上传补丁包
p31750108_190000_Linux-x86-64.zip至/opatch目录。 - 以grid用户在节点1解压补丁:
[grid@tbase1 opatch]$ unzip -q p31750108_190000_Linux-x86-64.zip -d /opatch - 节点2重复步骤1-3(需先在节点2创建
/opatch目录并授权,再上传解压补丁包):[grid@tbase2 opatch]$ unzip -q p31750108_190000_Linux-x86-64.zip -d /opatch
1.4 补丁冲突检查
需分别以grid和oracle用户检查补丁与现有环境的冲突,避免升级失败:
1.4.1 grid用户冲突检查(节点1、2均需执行)
# 检查子补丁冲突
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31771877
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31772784
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31773437
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31780966# 检查主补丁冲突(注意:此命令可能报错,无需处理)
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/
1.4.2 oracle用户冲突检查(节点1、2均需执行)
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31771877
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31772784
1.4.3 常见报错处理
- 报错现象:执行冲突检查命令时报错。
- 原因分析:命令格式输入错误(如复制粘贴导致的隐藏字符)。
- 解决方案:手动输入命令,避免复制粘贴。
- 特殊说明:执行
-phBaseDir /opatch/31750108/时可能报错“此命令不支持System Patch”,根据Oracle官方文档(Doc ID 2634165.1),该报错无需处理,直接跳过即可。
1.5 一次性补丁冲突检测(预验证)
以root用户在节点1执行预验证,确认补丁可正常应用:
[root@tbase1 opatch]# /u01/app/19.0.0/grid/OPatch/opatchauto apply /opatch/31750108 -analyze
注意:若预验证通过,再执行后续安装操作;若提示冲突,需先解决冲突再继续。
1.6 自动补丁安装(RAC节点依次执行)
RAC环境不建议两个节点同时安装,需先完成节点1安装,再执行节点2。安装过程中需关闭数据库和监听器,避免告警。
1.6.1 节点1安装步骤
- 以grid用户关闭数据库和监听器:
[grid@tbase1:/home/oracle]$ srvctl stop database -d jdya1 [grid@tbase1:/home/grid]$ lsnrctl stop - 以root用户配置环境变量并执行安装:
[root@tbase1 opatch]# export PATH=$PATH:/u01/app/19.0.0/grid/OPatch [root@tbase1 opatch]# opatchauto apply /opatch/31750108 - 等待安装完成(约30分钟-1小时,需根据服务器性能调整),确保无报错。
1.6.2 节点2安装步骤
- 以grid用户关闭数据库和监听器:
[grid@tbase2:/home/oracle]$ srvctl stop database -d jdya1 [grid@tbase2:/home/grid]$ lsnrctl stop - 以root用户配置环境变量并执行安装:
[root@tbase2 /]# export PATH=$PATH:/u01/app/19.0.0/grid/OPatch [root@tbase2 /]# opatchauto apply /opatch/31750108
1.6.3 节点2常见报错及解决方案
- 报错现象:
Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active patch level is [724960844]. CRS-1159: The cluster cannot be set to rolling patch mode because Oracle Clusterware is not active on at least one remote node. CRS-4000: Command Start failed, or completed with errors. OPATCHAUTO-68061: The orchestration engine failed. opatchauto failed with error code 42 - 原因分析:滚动模式安装GI补丁时,至少一个远程节点的GI未启动。
- 解决方案:
- 启动节点1的GI软件:
[root@tbase1 /]# /u01/app/19.0.0/grid/bin/crsctl start crs - 若启动GI时报错“CRS-6706: Oracle Clusterware Release patch level 不匹配”:
# 以root用户执行以下命令解锁并修复补丁级别 cd /u01/app/19.0.0/grid/crs/install ./rootcrs.sh -unlockcd /u01/app/19.0.0/grid/bin ./clscfg -localpatch ./clscfg -patchcd /u01/app/19.0.0/grid/crs/install ./rootcrs.sh -lock# 重新启动GI /u01/app/19.0.0/grid/bin/crsctl start crs - 若节点1启动数据库时报错“PRCD-1027: Failed to retrieve database jdya1”:
# 重启集群解决通信问题 [root@tbase1 /]# /u01/app/19.0.0/grid/bin/crsctl stop crs [root@tbase1 /]# /u01/app/19.0.0/grid/bin/crsctl start crs - 重新在节点2执行
opatchauto apply命令。
- 启动节点1的GI软件:
1.7 升级验证
- 以grid用户检查已安装补丁:
[grid@tbase1:/home/grid]$ opatch lspatches - 验证数据库版本:
[oracle@tbase1:/home/oracle]$ sqlplus -version # 预期输出:Oracle Database 19 Release 19.9.0.0.201020DBRU
二、安装临时补丁Patch 31667096
2.1 补丁安装前提
2.1.1 版本确认
- 数据库版本:Oracle Database 19.9.0.0.201020DBRU(已通过上文升级完成)。
- PSU版本:31771877(升级后默认包含)。
- OPatch版本:≥12.2.0.1.19(已在1.1步骤中升级)。
2.1.2 环境变量配置
- 确认
ORACLE_HOME已配置:[oracle@tbase1 ~]$ echo $ORACLE_HOME # 预期输出:/u01/app/oracle/product/19.0.0/dbhome_1(根据实际环境调整) - 确保
make、ar、ld、nm命令路径已加入环境变量(默认路径为/usr/bin):[oracle@tbase1 ~]$ export PATH=$PATH:/usr/bin # 永久生效可添加至~/.bash_profile
2.2 补丁解压
- 上传补丁包
p31667096_190000_Linux-x86-64.zip至两个节点的/opatch目录。 - 以oracle用户解压补丁:
[oracle@tbase1 opatch]$ unzip -q p31667096_190000_Linux-x86-64.zip -d /opatch [oracle@tbase2 opatch]$ unzip -q p31667096_190000_Linux-x86-64.zip -d /opatch
2.3 补丁冲突检查
以oracle用户在两个节点分别执行冲突检查:
[oracle@tbase1 ~]$ cd /opatch/31667096
[oracle@tbase1 31667096]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
注意:若提示冲突,需先卸载冲突补丁或联系Oracle技术支持。
2.4 补丁应用(节点1→节点2)
操作步骤:
- 以oracle用户登录节点1,关闭数据库:
[oracle@tbase1 31667096]$ sqlplus / as sysdba SQL> shutdown immediate; SQL> exit; - 应用补丁:
[oracle@tbase1 31667096]$ $ORACLE_HOME/OPatch/opatch apply # 执行过程中按提示输入"y"确认 - 启动数据库:
[oracle@tbase1 31667096]$ sqlplus / as sysdba SQL> startup; SQL> exit; - 节点2重复步骤1-3(需先关闭节点2的数据库,再应用补丁)。
2.5 补丁安装验证
以oracle用户在两个节点执行以下命令,确认补丁已成功安装:
[oracle@tbase1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory
# 预期输出中包含"31667096"补丁记录
三、总结
本文详细梳理了Oracle 19c RAC环境升级至19.9版本的完整流程,包括OPatch工具升级、补丁冲突检查、滚动安装及报错处理,同时覆盖了临时补丁Patch 31667096的安装步骤。操作核心在于严格区分用户权限、按节点依次执行、提前验证环境依赖,避免因并行操作或权限不足导致升级失败。升级完成后需通过opatch lspatches和sqlplus -version验证结果,确保数据库版本和补丁状态符合预期。若在操作过程中遇到其他报错,可参考Oracle官方文档或联系技术支持进一步排查。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/982027.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!