暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

补丁:将数据库版本更新(RU)应用于现有Data Guard ORACLE_HOME

原创 eternity 2022-10-12
525

本文给出了一个将数据库发布更新(RU)应用于现有Data Guard ORACLE_HOME的示例。

在进行任何修补之前,应始终检查修补程序注释。始终有可能引入了一些更改,使过程与此处介绍的不同。

  • 假设

  • 环境

  • 将修补程序应用于节点2

  • 切换到节点2

  • 将修补程序应用于节点1

  • 在节点2上运行datapatch

  • 切换到节点1

  • 清理

  • 检查修补程序历史记录

  • 回滚修补程序

相关文章。

  • 补丁:将数据库版本更新(RU)应用于现有ORACLE_HOME

  • 补丁:将版本更新(RU)应用于新的ORACLE_HOME

假设

本文做了一些假设。

  • 我们有一个现有的Oracle 19c或21c数据库数据保护设置。

  • 我们有数据库和ORACLE_HOME的备份。我们正在将修补程序应用于现有的ORACLE_HOME,因此如果出现无法通过回滚修补程序修复的问题,我们需要一种方法来回退。或者,我们可以修补一个新的ORACLE_HOME,这在链接的文章中有解释。

  • 我们已经下载了本季度的相关OPatch和补丁文件,如下所示。

这种设置使用文件系统存储,因此我们不必担心网格基础设施的修补。

我们从节点1作为主数据库,节点2作为备用数据库开始。我们将避免称他们为主和备用,因为他们的角色在这个过程中会发生变化。

环境

设置环境。这包括OPatch和修补程序文件名以及路径。请注意OPatch是如何添加到PATH环境变量的。

export SOFTWARE_DIR=/u01/software

# 19c
export OPATCH_FILE="p6880880_190000_Linux-x86-64.zip"
export PATCH_FILE="p34133642_190000_Linux-x86-64.zip"
export PATCH_TOP=${SOFTWARE_DIR}/34133642

# 21c
export OPATCH_FILE="p6880880_210000_Linux-x86-64.zip"
export PATCH_FILE="p34160444_210000_Linux-x86-64.zip"
export PATCH_TOP=${SOFTWARE_DIR}/34160444

export PATH=${ORACLE_HOME}/OPatch:${PATH}

export ORACLE_SID=cdb1
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

将修补程序应用于节点2

这两个节点具有以下角色。

  • 节点1:主数据库

  • 节点2:备用数据库

我们首先将补丁应用于节点2,即备用数据库。

保留现有OPatch的副本,并解压缩最新版本的OPatch。

cd ${ORACLE_HOME}
mv OPatch OPatch.`date +"%Y"-"%m"-"%d"`
unzip -oq ${SOFTWARE_DIR}/${OPATCH_FILE}

解压缩修补程序软件。

cd ${SOFTWARE_DIR}
unzip -oq ${PATCH_FILE}

关闭从ORACLE_HOME运行的服务。

sqlplus / as sysdba <<EOF
shutdown immediate;
exit
EOF

lsnrctl stop

应用修补程序。

cd ${PATCH_TOP}
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply -silent

启动侦听器。

lsnrctl start

在装载模式下启动数据库并启用托管恢复。

sqlplus / as sysdba <<EOF
startup mount;
alter database recover managed standby database using current logfile disconnect;
exit;
EOF

我们不能运行datapatch,因为这会中断备用,但如果我们想评估补丁,我们可以执行以下操作。

  • 将待机状态转换为快照待机状态。

  • 在备用快照上运行datapatch。

  • 验证补丁对我们的系统没有不利影响。

  • 将快照备用转换回物理备用。

  • 继续修补过程。

此处演示快照待机。本文将忽略此评估步骤并继续修补。

切换到节点2

连接到节点1上的主数据库(cdb1)。

dgmgrl sys/Password1@cdb1

切换到备用数据库(cdb1_stby)。

switchover to cdb1_stby;

当这项工作成功完成时,我们准备向前迈进。

将修补程序应用于节点1

这两个节点具有以下角色。

  • 节点1:备用数据库

  • 节点2:主数据库(数据补丁尚未应用)

我们将补丁应用于当前备用数据库Node 1。

保留现有OPatch的副本,并解压缩最新版本的OPatch。

cd ${ORACLE_HOME}
mv OPatch OPatch.`date +"%Y"-"%m"-"%d"`
unzip -oq ${SOFTWARE_DIR}/${OPATCH_FILE}

解压缩修补程序软件。

cd ${SOFTWARE_DIR}
unzip -oq ${PATCH_FILE}

关闭从ORACLE_HOME运行的服务。

sqlplus / as sysdba <<EOF
shutdown immediate;
exit;
EOF

lsnrctl stop

应用修补程序。

cd ${PATCH_TOP}
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply -silent

启动侦听器。

lsnrctl start

在装载模式下启动数据库并启用托管恢复。

sqlplus / as sysdba <<EOF
startup mount;
alter database recover managed standby database using current logfile disconnect;
exit;
EOF

此时,二进制补丁已应用于所有节点,因此我们可以继续前进并在主数据库上运行datapatch。

在节点2上运行datapatch

这两个节点具有以下角色。

  • 节点1:备用数据库

  • 节点2:主数据库(数据补丁尚未应用)

我们必须对主数据库(当前为节点2)运行datapatch。

cd $ORACLE_HOME/OPatch
./datapatch -verbose

重新编译所有无效对象。

$ORACLE_HOME/perl/bin/perl \
    -I$ORACLE_HOME/perl/lib \
    -I$ORACLE_HOME/rdbms/admin \
    $ORACLE_HOME/rdbms/admin/catcon.pl \
    -l /tmp/ \
    -b postpatch_${ORACLE_SID}_recompile \
    -C 'PDB$SEED' \
    $ORACLE_HOME/rdbms/admin/utlrp.sql

切换到节点1

这两个节点具有以下角色。

  • 节点1:备用数据库

  • 节点2:主数据库

我们可以这样做,但假设我们想让Node 1再次成为主数据库,我们将连接到Node 2上的主数据库(cdb1_stby)。

dgmgrl sys/Password1@cdb1_stby

然后切换到节点1上的新备用数据库(cdb1)。

switchover to cdb1;

这两个节点具有以下角色。

  • 节点1:主数据库

  • 节点2:备用数据库

清理

清理修补程序软件。

cd ${SOFTWARE_DIR}
rm -Rf ${PATCH_TOP}
rm -Rf ${OPATCH_FILE}
rm -Rf ${PATCH_FILE}
rm -Rf PatchSearch.xml

检查修补程序历史记录

我们可以通过运行以下命令来检查修补程序历史记录。

opatch lsinventory

回滚修补程序

要回滚修补程序,我们必须重复修补过程,但不是应用修补程序,而是回滚修补程序。

# 19c
opatch rollback -id 34133642 -silent

# 21c
opatch rollback -id 34160444 -silent

有关详细信息,请参见:

  • Critical Patch Updates, Security Alerts and Bulletins
  • Patching : Apply a Database Release Update (RU) to an Existing ORACLE_HOME
  • Patching : Apply a Release Update (RU) to a New ORACLE_HOME

希望能帮到你。

原文标题:Patching : Apply a Database Release Update (RU) to Existing Data Guard ORACLE_HOMEs
原文链接:https://oracle-base.com/articles/misc/apply-db-release-update-to-existing-data-guard-oracle-homes

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论