Oracle 21C 21.3.0.0 GI DB OEL8.6 补丁与升级
1 背景知识
本文主要介绍如何在 Oracle 21C 上打最新补丁。
2 环境准备
2.1 上传补丁程序文件
p36352352_210000_Linux-x86-64.zip #Database Update
p36352207_210000_Linux-x86-64.zip #Grid Infrastrusture
p6880880_230000_Linux-x86-64.zip #Opatch
2.2 解压文件
chown grid:oinstall /app/setup/ -R
su - grid
#grid>
cd /app/setup
rm -rf V1011496-01.zip #由于/app 磁盘空间不足
rm -rf V1011504-01.zip #由于/app 磁盘空间不足
unzip -q p36352207_210000_Linux-x86-64.zip
unzip -q p6880880_230000_Linux-x86-64.zip
Note
- 两个补丁已经是Oracle
21.3.0.0
最后的修复补丁。 - 上传Opatch 补丁,需要上传23C 的 OPatch 补丁。
Warning
这里解压补丁文件必须使用 grid
用户,否则会无法读取补丁文件,造成补丁安装失败。
3 GI 升级OPatch
3.1 GI HOME 目录授权
#root>
chown grid:oinstall /u01/app/grid -R
3.2 GI HOME 目录安装 OPatch
su - grid
#grid>
rm -rf $ORACLE_HOME/OPatch/*
cd /app/setup
cp -R OPatch/* $ORACLE_HOME/OPatch/
3.3 验证是否升级成功
su - grid
#grid>
cd $ORACLE_HOME/OPatch
./opatch lsinventory
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2024, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/grid/product/21.3.0/db_1
Central Inventory : /u01/app/grid/oraInventory
from : /u01/app/grid/product/21.3.0/db_1/oraInst.loc
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.9.0
Log file location : /u01/app/grid/product/21.3.0/db_1/cfgtoollogs/opatch/opatch2024-05-29_11-21-58AM_1.log
Lsinventory Output file location : /u01/app/grid/product/21.3.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2024-05-29_11-21-58AM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: node1
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Grid Infrastructure 21c 21.0.0.0.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
Note
目前 Oracle OPatch 的版本为 12.2.0.1.42
。
4 DB 升级Opatch
4.1 DB HOME 目录安装 OPatch
su - oracle
#oracle>
rm -rf $ORACLE_HOME/OPatch/*
cd /app/setup
cp -R OPatch/* $ORACLE_HOME/OPatch/
4.2 验证是否升级成功
su - oracle
#oracle>
cd $ORACLE_HOME/OPatch
./opatch lsinventory
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2024, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/21.3.0/db_1
Central Inventory : /u01/app/grid/oraInventory
from : /u01/app/oracle/product/21.3.0/db_1/oraInst.loc
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.9.0
Log file location : /u01/app/oracle/product/21.3.0/db_1/cfgtoollogs/opatch/opatch2024-05-29_11-22-24AM_1.log
Lsinventory Output file location : /u01/app/oracle/product/21.3.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2024-05-29_11-22-24AM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: node1
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Database 21c 21.0.0.0.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
Note
目前 Oracle OPatch 的版本为 12.2.0.1.42
。
5 GI 补丁预检查
0.1 GI 补丁冲突预检查
0.1.1 创建补丁列表路径文件
创建 patch_list_gihome.txt
文件。
#root>
su - grid
#grid>
vi /tmp/patch_list_gihome.txt
//输入内容:
<UNZIPPED_PATCH_LOCATION>/36352207/36352352
<UNZIPPED_PATCH_LOCATION>/36352207/36360754
<UNZIPPED_PATCH_LOCATION>/36352207/36360764
<UNZIPPED_PATCH_LOCATION>/36352207/36360767
<UNZIPPED_PATCH_LOCATION>/36352207/36460255
<UNZIPPED_PATCH_LOCATION>/36352207/36115667
使用 VIM 编辑器进行批量替换。
:%s/<UNZIPPED_PATCH_LOCATION>/\/app\/setup/g
0.1.2 运行补丁冲突预检查
运行 OPatch 命令以检查是否有足够的可用空间并 Grid Infrastructure
中可用。
#grid>
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseFile /tmp/patch_list_gihome.txt
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2024, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/grid/product/21.3.0/db_1
Central Inventory : /u01/app/grid/oraInventory
from : /u01/app/grid/product/21.3.0/db_1/oraInst.loc
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.9.0
Log file location : /u01/app/grid/product/21.3.0/db_1/cfgtoollogs/opatch/opatch2024-06-19_10-13-31AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
0.2 GI 补丁空间预检查
0.2.1 创建补丁列表路径文件
创建 patch_list_gihome.txt
文件。
#root>
su - grid
#grid>
vi /tmp/patch_list_gihome.txt
//输入内容:
<UNZIPPED_PATCH_LOCATION>/36352207/36352352
<UNZIPPED_PATCH_LOCATION>/36352207/36360754
<UNZIPPED_PATCH_LOCATION>/36352207/36360764
<UNZIPPED_PATCH_LOCATION>/36352207/36360767
<UNZIPPED_PATCH_LOCATION>/36352207/36460255
<UNZIPPED_PATCH_LOCATION>/36352207/36115667
使用 VIM 编辑器进行批量替换。
:%s/<UNZIPPED_PATCH_LOCATION>/\/app\/setup/g
0.2.2 运行补丁空间预检查
运行 OPatch 命令以检查是否有足够的可用空间并 Grid Infrastructure
中可用。
#grid>
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2024, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/grid/product/21.3.0/db_1
Central Inventory : /u01/app/grid/oraInventory
from : /u01/app/grid/product/21.3.0/db_1/oraInst.loc
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.9.0
Log file location : /u01/app/grid/product/21.3.0/db_1/cfgtoollogs/opatch/opatch2024-05-29_11-22-52AM_1.log
Invoking prereq "checksystemspace"
Prereq "checkSystemSpace" passed.
OPatch succeeded.
Note
如果输出 OPatch succeeded.
则补丁能够成功运行。
1 DB 补丁预检查
1.1 DB 补丁冲突预检查
1.1.1 创建补丁列表路径文件
创建 /tmp/patch_list_dbhome.txt
文件。
su - oracle
#oracle>
vi /tmp/patch_list_dbhome.txt
//输入内容:
<UNZIPPED_PATCH_LOCATION>/36352207/36352352
<UNZIPPED_PATCH_LOCATION>/36352207/36360754
使用 VIM 编辑器进行批量替换。
:%s/<UNZIPPED_PATCH_LOCATION>/\/app\/setup/g
1.1.2 运行补丁冲突预检查
运行 OPatch 命令以检查是否有足够的可用空间并 Grid Infrastructure
中可用。
#oracle>
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseFile /tmp/patch_list_dbhome.txt
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2024, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/21.3.0/db_1
Central Inventory : /u01/app/grid/oraInventory
from : /u01/app/oracle/product/21.3.0/db_1/oraInst.loc
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.9.0
Log file location : /u01/app/oracle/product/21.3.0/db_1/cfgtoollogs/opatch/opatch2024-06-19_10-14-55AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
1.2 DB 补丁空间预检查
1.2.1 创建补丁列表路径文件
创建 /tmp/patch_list_dbhome.txt
文件。
su - oracle
#oracle>
vi /tmp/patch_list_dbhome.txt
//输入内容:
<UNZIPPED_PATCH_LOCATION>/36352207/36352352
<UNZIPPED_PATCH_LOCATION>/36352207/36360754
使用 VIM 编辑器进行批量替换。
:%s/<UNZIPPED_PATCH_LOCATION>/\/app\/setup/g
1.2.2 运行补丁空间预检查
运行 OPatch 命令以检查是否有足够的可用空间并 Grid Infrastructure
中可用。
#oracle>
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt
Oracle Interim Patch Installer version 12.2.0.1.42
Copyright (c) 2024, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/21.3.0/db_1
Central Inventory : /u01/app/grid/oraInventory
from : /u01/app/oracle/product/21.3.0/db_1/oraInst.loc
OPatch version : 12.2.0.1.42
OUI version : 12.2.0.9.0
Log file location : /u01/app/oracle/product/21.3.0/db_1/cfgtoollogs/opatch/opatch2024-05-29_11-23-15AM_1.log
Invoking prereq "checksystemspace"
Prereq "checkSystemSpace" passed.
OPatch succeeded.
Note
如果输出 OPatch succeeded.
则补丁能够成功运行。
2 GI + DB 升级
Warning
- 必须使用
root
用户调用并打补丁。 - 在群集中的每个节点上都需要执行。
su - root
#root>
export PATH=$PATH:/u01/app/grid/product/21.3.0/db_1/OPatch
#root>
cd /u01/app/grid/product/21.3.0/db_1/OPatch
./opatchauto apply /app/setup/36352207
2.1 编译无效对象
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
3 小结 & FAQ
这里展示了一些 Oracle opatchauto 命令的其他方式。
- 修补 GI 主目录和所有 Oracle RAC 数据库主目录相同版本:
opatchauto apply <UNZIPPED_PATCH_LOCATION>/36352207
- 要仅修补 GI 主目录:
opatchauto apply <UNZIPPED_PATCH_LOCATION>/36352207 -oh <GI_HOME>
- 要修补一个或多个 Oracle RAC 数据库主目录,请执行以下操作:
opatchauto apply <UNZIPPED_PATCH_LOCATION>/36352207 -oh <oracle_home1_path>,<oracle_home2_path>
- 从 GI 主目录和每个 Oracle RAC 回滚修补程序数据库主页:
opatchauto rollback <UNZIPPED_PATCH_LOCATION>/33583921
- 要从 GI 主页回滚补丁:
opatchauto rollback <UNZIPPED_PATCH_LOCATION>/36352207 -oh <path to GI home>
- 要从 Oracle RAC 数据库主页回滚修补程序,请执行以下操作:
opatchauto rollback <UNZIPPED_PATCH_LOCATION>/36352207 -oh <oracle_home1_path>,<oracle_home2_path>