找回密码
 立即注册
首页 业界区 业界 Oracle 19c数据库升级PSU版本及Patch安装操作指南 ...

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

柏球侠 7 天前
前言

本文适用于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目录:
    1. # grid用户解压
    2. [grid@tbase1 tmp]$ unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
    3. # oracle用户解压
    4. [oracle@tbase1 tmp]$ unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
    复制代码
  • 验证OPatch版本(两个用户均需执行):
    1. # grid用户验证
    2. [grid@tbase1 ~]$ $ORACLE_HOME/OPatch/opatch version
    3. # 预期输出:OPatch Version: 12.2.0.1.40(需≥12.2.0.1.19)
    4. # OPatch succeeded.
    5. # oracle用户验证
    6. [oracle@tbase1 ~]$ $ORACLE_HOME/OPatch/opatch version
    7. # 预期输出:OPatch Version: 12.2.0.1.40
    8. # OPatch succeeded.
    复制代码
  • 节点2重复上述步骤,确保两个节点的grid和oracle用户OPatch版本均满足要求。
1.2 补丁一致性检查(升级前状态确认)

在应用升级补丁前,需检查当前grid和oracle用户的Oracle Home已安装补丁状态,留存基线信息:
  1. # grid用户执行(节点1、2均需执行)
  2. [grid@tbase1 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
  3. # oracle用户执行(节点1、2均需执行)
  4. [oracle@tbase1 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
复制代码
注意:保存执行结果,便于后续对比补丁是否成功应用。
1.3 升级补丁上传与解压

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


  • 以root用户在节点1创建补丁目录并授权:
    1. [root@tbase1 /]# mkdir /opatch
    2. [root@tbase1 /]# chown -R grid:oinstall /opatch
    复制代码
  • 上传补丁包p31750108_190000_Linux-x86-64.zip至/opatch目录。
  • 以grid用户在节点1解压补丁:
    1. [grid@tbase1 opatch]$ unzip -q p31750108_190000_Linux-x86-64.zip -d /opatch
    复制代码
  • 节点2重复步骤1-3(需先在节点2创建/opatch目录并授权,再上传解压补丁包):
    1. [grid@tbase2 opatch]$ unzip -q p31750108_190000_Linux-x86-64.zip -d /opatch
    复制代码
1.4 补丁冲突检查

需分别以grid和oracle用户检查补丁与现有环境的冲突,避免升级失败:
1.4.1 grid用户冲突检查(节点1、2均需执行)
  1. # 检查子补丁冲突
  2. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31771877
  3. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31772784
  4. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31773437
  5. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31780966
  6. # 检查主补丁冲突(注意:此命令可能报错,无需处理)
  7. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/
复制代码
1.4.2 oracle用户冲突检查(节点1、2均需执行)
  1. $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /opatch/31750108/31771877
  2. $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执行预验证,确认补丁可正常应用:
  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用户关闭数据库和监听器:
    1. [grid@tbase1:/home/oracle]$ srvctl stop database -d jdya1
    2. [grid@tbase1:/home/grid]$ lsnrctl stop
    复制代码
  • 以root用户配置环境变量并执行安装:
    1. [root@tbase1 opatch]# export PATH=$PATH:/u01/app/19.0.0/grid/OPatch
    2. [root@tbase1 opatch]# opatchauto apply /opatch/31750108
    复制代码
  • 等待安装完成(约30分钟-1小时,需根据服务器性能调整),确保无报错。
1.6.2 节点2安装步骤


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


  • 报错现象
    1. 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].
    2. CRS-1159: The cluster cannot be set to rolling patch mode because Oracle Clusterware is not active on at least one remote node.
    3. CRS-4000: Command Start failed, or completed with errors.
    4. OPATCHAUTO-68061: The orchestration engine failed.
    5. opatchauto failed with error code 42
    复制代码
  • 原因分析:滚动模式安装GI补丁时,至少一个远程节点的GI未启动。
  • 解决方案

    • 启动节点1的GI软件:
      1. [root@tbase1 /]# /u01/app/19.0.0/grid/bin/crsctl start crs
      复制代码
    • 若启动GI时报错“CRS-6706: Oracle Clusterware Release patch level 不匹配”:
      1. # 以root用户执行以下命令解锁并修复补丁级别
      2. cd /u01/app/19.0.0/grid/crs/install
      3. ./rootcrs.sh -unlock
      4. cd /u01/app/19.0.0/grid/bin
      5. ./clscfg -localpatch
      6. ./clscfg -patch
      7. cd /u01/app/19.0.0/grid/crs/install
      8. ./rootcrs.sh -lock
      9. # 重新启动GI
      10. /u01/app/19.0.0/grid/bin/crsctl start crs
      复制代码
    • 若节点1启动数据库时报错“PRCD-1027: Failed to retrieve database jdya1”:
      1. # 重启集群解决通信问题
      2. [root@tbase1 /]# /u01/app/19.0.0/grid/bin/crsctl stop crs
      3. [root@tbase1 /]# /u01/app/19.0.0/grid/bin/crsctl start crs
      复制代码
    • 重新在节点2执行opatchauto apply命令。

1.7 升级验证


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


  • 上传补丁包p31667096_190000_Linux-x86-64.zip至两个节点的/opatch目录。
  • 以oracle用户解压补丁:
    1. [oracle@tbase1 opatch]$ unzip -q p31667096_190000_Linux-x86-64.zip -d /opatch
    2. [oracle@tbase2 opatch]$ unzip -q p31667096_190000_Linux-x86-64.zip -d /opatch
    复制代码
2.3 补丁冲突检查

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

操作步骤:


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

以oracle用户在两个节点执行以下命令,确认补丁已成功安装:
  1. [oracle@tbase1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory
  2. # 预期输出中包含"31667096"补丁记录
复制代码
三、总结

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册