文章目录
- 一、补丁包概述
- 二、OPatch检查和更新
- Grid用户更新OPatch
- Oracle用户更新OPatch
- 三、验证Oracle Inventory的有效性
- 四、运行 OPatch 冲突检查
- 五、运行opatch命令检查GI HOME下是否有足够的空间
- 六、补丁冲突检测与解决(修补程序)
- 七、使用root用户应用补丁【节点1打完,再打节点2】
- 八、将修改后的SQL文件驾照到数据库中
- 九、回退补丁升级
一、补丁包概述
补丁升级包
链接:https://pan.baidu.com/s/16uTAePiCRNdCOiLn1zc48A?pwd=k3w0
提取码:k3w0
将以下补丁包上传到/soft下
p6880880_190000_Linux-x86-64.zip (更新opatch)
p35940989_190000_Linux-x86-64.zip(GI包,grid软件升级包)
p35943157_190000_Linux-x86-64.zip(DB包,数据库升级包)
这里也可以先查看一下打补丁包之前的版本19.3
column product format A30
column version format A15
column version_full format A20
column status format A15
select * from product_component_version;
二、OPatch检查和更新
注意:所有节点分别操作
Grid用户更新OPatch
查看一下OPatch的版本信息
opatch version
将6880880补丁下载,并解压 $ unzip -o “6880880.zip”
在这里我们直接一次性解压所有的补丁包
# 注意以下所有操作都是root用户执行的,但是进行查询版本的时候需要进入配置过环境变量的用户
su - root
cd /soft
chown -R grid:oinstall /soft
su - grid -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/19.3.0/grid"
su - grid -c "unzip -q /soft/p35940989_190000_Linux-x86-64.zip -d /soft"
chown -R oracle:oinstall /soft
su - oracle -c "unzip -q -o /soft/p35943157_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db"
su - grid
opatch version
Oracle用户更新OPatch
查看一下OPatch的版本信息
opatch version
su - oracle -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db"
su - oracle
opatch version
三、验证Oracle Inventory的有效性
注意:所有节点都操作,以节点1为例。
GI HOME 和DB HOME 都需要验证,分别使用grid和oracle用户执行如下命令,确保返回SUCCESS。
oracle用户:
$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
grid用户:
这一步时间会比oracle用户更长一点,耐心等待即可
$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
四、运行 OPatch 冲突检查
注意:所有节点都操作
进行补丁验证(grid用户下)
cd /u01/app/19.3.0/grid/OPatch/
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/33575402
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/35943157
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/35956421
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/35967489
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/36115038
进行补丁验证(Oracle用户下)
su - oracle
cd /u01/app/19.3.0/grid/OPatch
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/35943157
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35940989/35967489
五、运行opatch命令检查GI HOME下是否有足够的空间
注意:所有节点都操作
tip:在创建文件的时候可能回遇到权限问题,可以先使用root用户创建修改内容,然后再切换到相应的用户执行检查命令
grid用户:
vim /soft/patch_list_gihome.txt
/soft/35940989/35943157
/soft/35940989/35967489
/soft/35940989/35956421
/soft/35940989/36115038
/soft/35940989/33575402
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /soft/patch_list_gihome.txt
oracle用户:
vim /soft/patch_list_dbhome.txt
/soft/35940989/35943157
/soft/35940989/35967489
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /soft/patch_list_dbhome.txt
六、补丁冲突检测与解决(修补程序)
应用修补程序补丁:
su - root
cd /
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35940989 -analyze
如果要回滚修补程序,请运行以下命令(现在是安装过程,不用执行,了解就行):
rollback
su - root
/u01/app/19.3.0/grid/OPatch/opatchauto rollback /soft/35940989 -analyze
七、使用root用户应用补丁【节点1打完,再打节点2】
- 这里节点1和节点2都需要执行,否则在执行过程会报错
su - root
# 下面这个文件节点2可能没有,建议从节点1copy在授权 scp -r /u01/app/oraInventory/ContentsXML/oui-patch.xml root@p19c02:/u01/app/oraInventory/ContentsXML
chmod 777 /u01/app/oraInventory/ContentsXML/oui-patch.xml
cd /soft/35940989/35967489/files/bin/
chmod 777 *
- 关闭监听,数据库(对哪个节点打补丁就关哪个,以下代码是关闭节点1的)
su - grid
lsnrctl stop
srvctl stop instance -d p19c0 -i p19c01
- 以下是启动监听,数据库的代码(记得节点1打补丁完成之后,在打节点2的补丁之前要启动)
su - grid
lsnrctl start
srvctl start instance -d p19c0 -i p19c01
- 以下是GI和DB一起打补丁的步骤(如果运行内存比较小的话可以参考下面分开打的步骤)(我是通过这种方法成功的)
# 节点1
su - root
cd /
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export PATH=/u01/app/19.3.0/grid/bin:/u01/app/19.3.0/grid/OPatch:$PATH
# 打补丁
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35940989
或
opatchauto apply /soft/35940989
# 节点2,在打节点2之前,注意先把节点一的服务启动
su - root
cd /
# 打补丁
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35940989
或
opatchauto apply /soft/35940989
# 查看版本的命令
opatch lspatches
- 以下是GI和DB分开打的步骤
# 以下均以root用户在根目录下执行
# 以下是结点1的
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35940989 -oh /u01/app/19.3.0/grid
# 这里如果报错的话查看报错日志,我这里也报错了,日志主要显示没有读写权限,解决办法如下:
# 1、重启虚拟机(因为这里报错的话你的grid集群就不能使用了,需要重启修复)
# 2、cd /soft/35940989/35967489/files/bin/
# 3、chmod 777 *
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35940989 -oh /u01/app/oracle/product/19.3.0/db
# 启动结点1的数据库
/u01/app/oracle/product/19.3.0/db/bin/srvctl start instance –d p19c0 -n p19c01
# 以下是结点2的
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35940989 -oh /u01/app/19.3.0/grid
# 启动结点2的数据库
/u01/app/oracle/product/19.3.0/db/bin/srvctl start instance –d p19c0 -n p19c02
八、将修改后的SQL文件驾照到数据库中
sqlplus / nolog
Connect / as sysdba
startup
quit
cd $ORACLE_HOME/OPatch
./datapatch -sanity_checks
./datapatch -verbose
九、回退补丁升级
su - root
cd /
/u01/app/19.3.0/grid/OPatch/opatchauto rollback /soft/35940989
或
opatchauto rollback /soft/35940989
完结。