柏球侠 发表于 2025-11-30 18:00:03

Oracle 19c数据库升级PSU版本及Patch安装操作指南

前言

本文适用于Oracle 19c RAC(Real Application Clusters)环境,详细记录了从低版本升级至19.9.0版本的完整流程,以及针对大表分区操作报错(ORA-600:)的临时补丁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用户解压
$ unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME

# oracle用户解压
$ unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
[*]验证OPatch版本(两个用户均需执行):# grid用户验证
$ $ORACLE_HOME/OPatch/opatch version
# 预期输出:OPatch Version: 12.2.0.1.40(需≥12.2.0.1.19)
# OPatch succeeded.

# oracle用户验证
$ $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均需执行)
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

# oracle用户执行(节点1、2均需执行)
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME注意:保存执行结果,便于后续对比补丁是否成功应用。
1.3 升级补丁上传与解压

本次升级使用补丁包p31750108_190000_Linux-x86-64.zip,操作如下:
操作步骤:


[*]以root用户在节点1创建补丁目录并授权:# mkdir /opatch
# chown -R grid:oinstall /opatch
[*]上传补丁包p31750108_190000_Linux-x86-64.zip至/opatch目录。
[*]以grid用户在节点1解压补丁:$ unzip -q p31750108_190000_Linux-x86-64.zip -d /opatch
[*]节点2重复步骤1-3(需先在节点2创建/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/317727841.4.3 常见报错处理


[*]报错现象:执行冲突检查命令时报错。
[*]原因分析:命令格式输入错误(如复制粘贴导致的隐藏字符)。
[*]解决方案:手动输入命令,避免复制粘贴。
[*]特殊说明:执行-phBaseDir /opatch/31750108/时可能报错“此命令不支持System Patch”,根据Oracle官方文档(Doc ID 2634165.1),该报错无需处理,直接跳过即可。
1.5 一次性补丁冲突检测(预验证)

以root用户在节点1执行预验证,确认补丁可正常应用:
# /u01/app/19.0.0/grid/OPatch/opatchauto apply /opatch/31750108 -analyze注意:若预验证通过,再执行后续安装操作;若提示冲突,需先解决冲突再继续。
1.6 自动补丁安装(RAC节点依次执行)

RAC环境不建议两个节点同时安装,需先完成节点1安装,再执行节点2。安装过程中需关闭数据库和监听器,避免告警。
1.6.1 节点1安装步骤


[*]以grid用户关闭数据库和监听器:$ srvctl stop database -d jdya1
$ lsnrctl stop
[*]以root用户配置环境变量并执行安装:# export PATH=$PATH:/u01/app/19.0.0/grid/OPatch
# opatchauto apply /opatch/31750108
[*]等待安装完成(约30分钟-1小时,需根据服务器性能调整),确保无报错。
1.6.2 节点2安装步骤


[*]以grid用户关闭数据库和监听器:$ srvctl stop database -d jdya1
$ lsnrctl stop
[*]以root用户配置环境变量并执行安装:# export PATH=$PATH:/u01/app/19.0.0/grid/OPatch
# opatchauto apply /opatch/31750108
1.6.3 节点2常见报错及解决方案


[*]报错现象:Oracle Clusterware active version on the cluster is . The cluster upgrade state is . The cluster active patch level is .
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软件:# /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 -unlock

cd /u01/app/19.0.0/grid/bin
./clscfg -localpatch
./clscfg -patch

cd /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”:# 重启集群解决通信问题
# /u01/app/19.0.0/grid/bin/crsctl stop crs
# /u01/app/19.0.0/grid/bin/crsctl start crs
[*]重新在节点2执行opatchauto apply命令。

1.7 升级验证


[*]以grid用户检查已安装补丁:$ opatch lspatches
[*]验证数据库版本:$ 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已配置:$ echo $ORACLE_HOME
# 预期输出:/u01/app/oracle/product/19.0.0/dbhome_1(根据实际环境调整)
[*]确保make、ar、ld、nm命令路径已加入环境变量(默认路径为/usr/bin):$ export PATH=$PATH:/usr/bin
# 永久生效可添加至~/.bash_profile
2.2 补丁解压


[*]上传补丁包p31667096_190000_Linux-x86-64.zip至两个节点的/opatch目录。
[*]以oracle用户解压补丁:$ unzip -q p31667096_190000_Linux-x86-64.zip -d /opatch
$ unzip -q p31667096_190000_Linux-x86-64.zip -d /opatch
2.3 补丁冲突检查

以oracle用户在两个节点分别执行冲突检查:
$ cd /opatch/31667096
$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./注意:若提示冲突,需先卸载冲突补丁或联系Oracle技术支持。
2.4 补丁应用(节点1→节点2)

操作步骤:


[*]以oracle用户登录节点1,关闭数据库:$ sqlplus / as sysdba
SQL> shutdown immediate;
SQL> exit;
[*]应用补丁:$ $ORACLE_HOME/OPatch/opatch apply
# 执行过程中按提示输入"y"确认
[*]启动数据库:$ sqlplus / as sysdba
SQL> startup;
SQL> exit;
[*]节点2重复步骤1-3(需先关闭节点2的数据库,再应用补丁)。
2.5 补丁安装验证

以oracle用户在两个节点执行以下命令,确认补丁已成功安装:
$ $ORACLE_HOME/OPatch/opatch lsinventory
# 预期输出中包含"31667096"补丁记录三、总结

本文详细梳理了Oracle 19c RAC环境升级至19.9版本的完整流程,包括OPatch工具升级、补丁冲突检查、滚动安装及报错处理,同时覆盖了临时补丁Patch 31667096的安装步骤。操作核心在于严格区分用户权限、按节点依次执行、提前验证环境依赖,避免因并行操作或权限不足导致升级失败。升级完成后需通过opatch lspatches和sqlplus -version验证结果,确保数据库版本和补丁状态符合预期。若在操作过程中遇到其他报错,可参考Oracle官方文档或联系技术支持进一步排查。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Oracle 19c数据库升级PSU版本及Patch安装操作指南