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

Oracle 19c打19.12补丁步骤

IT那活儿 2022-02-09
3950

点击上方“IT那活儿”,关注后了解更多精彩内容!!


01

执行前检查(两边都检查)


[grid@rac1 ~]$ crsctl query crs softwareversionOracle Clusterware version on node [rac1] is [19.0.0.0.0][grid@rac1 ~]$ crsctl query crs releaseversionOracle High Availability Services release version on the local node is [19.0.0.0.0][grid@rac1 ~]$ crsctl query crs releaseversionOracle High Availability Services release version on the local node is [19.0.0.0.0][grid@rac1 OPatch]$ ./opatch lspatches29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)29517247;ACFS RELEASE UPDATE 19.3.0.0.0 (29517247)29517242;Database Release Update : 19.3.0.0.190416 (29517242)29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763)OPatch succeeded.[grid@rac1 OPatch]$ ./opatch versionOPatch Version: 12.2.0.1.17
==》需要更新OPatch(两边都这样)。


02

更新OPatch版本


[root@rac1 software]# chown grid:oinstall p6880880_210000_Linux-x86-64.zip
用grid来解压。
[grid@rac1 software]$ unzip p6880880_210000_Linux-x86-64.zip
备份原来的OPatch。
[grid@rac1 grid]$ echo $ORACLE_HOME/u01/app/19.3.0/grid[root@rac1 grid]# mv OPatch OPatch.bak[root@rac1 software]# cp -rp OPatch /u01/app/19.3.0/grid/[grid@rac1 OPatch]$ ./opatch versionOPatch Version: 12.2.0.1.25OPatch succeeded.
oracle同理,只不过换成oracle用户。


03

验证oracle inventory有效性

验证oracle inventory有效性(GI HOME 和DB HOME 都需要验证,分别使用grid和oracle用户执行如下命令,确保返回SUCCESS)。
[grid@rac1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME[oracle@rac1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME



04

检查patch是否存在冲突

因为我们下载的补丁包含gi和db的补丁,因此需要分别进行检测,在检测之前需要先修改权限,否则会报错。
[grid@rac1 software]$ lltotal 2789536drwxr-x--- 15 oracle oinstall 4096 Apr 20 02:45 OPatch-rw-r--r-- 1 root root 2734496202 Aug 2 23:20 p32895426_190000_Linux-x86-64.zip-rwxrwxrwx 1 oracle oinstall 121981878 Aug 3 00:19 p6880880_210000_Linux-x86-64.zip
这里尝试用root解压然后赋权,改为777。
[grid@rac1 software]$ unzip p32895426_190000_Linux-x86-64.zipchown grid:oinstall /u01/software/32895426 -Rchmod 777 /u01/software/32895426 -R
用grid分别跑这些,结果需要是OPatch succeeded。
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/software/32895426/32904851$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/software/32895426/32916816$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/software/32895426/32915586$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/software/32895426/32918050
使用root来更改文件权限。
chown oracle:oinstall /u01/software/32895426 -R
用oracle分别跑这些,结果需要是OPatch succeeded。
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/software/32895426/32904851$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/software/32895426/32916816



05

系统空间检查

df –h别太小就行(20G以上)。


06

实际opatch前的opatch分析

使用root来进行安装前分析:

/u01/app/19.3.0/grid/OPatch/opatchauto apply /u01/software/32895426 -analyze/u01/app/19.3.0/grid/OPatch/opatchauto apply /u01/software/32895426 –analyze
==》查看返回结果无报错,则可以执行。
注意一点:这里的RU补丁,一定要用GRID用户来解压缩,否则执行opatchauto的时候回报OPatch Prerequisite check “CheckApplicable” failed的错误。
其实是根据readme文档的说明,可以一次性打GI 和DB 的RU,但按文档操作,出现了很多问题。
所以,对于RU的升级,建议按照nonrolling的方式进行,虽然要停机,但可以保证升级的成功。

07

打gi补丁

停库(两边都停,不需要停crs资源):alter pluggable database zdq close;
==》此时节点二是完全正常的。
在节点1给这个文件权限,节点二是没有这个文件的。
chmod 777 /u01/app/oraInventory/ContentsXML/oui-patch.xmlchmod 777 /u01/app/19.3.0/grid/crs/install/cmdllroot.shchmod 777 /etc/oracleafd.confchown grid:oinstall /etc/oracleafd.confchown grid:oinstall /u01/app/19.3.0/grid/crs/install/cmdllroot.sh[root@rac1 ~]# export PATH=$PATH:/u01/app/19.3.0/grid/OPatch[root@rac1 ~]# chown grid:oinstall /u01/software/32895426 -R[root@rac1 ~]# chmod 777 /u01/software/32895426 -R[root@rac1 ~]# opatchauto apply /u01/software/32895426 -oh /u01/app/19.3.0/grid
==》再打二节点即可。

08

打db补丁

chown oracle:oinstall /u01/software/32895426 -Rchmod 777 /u01/software/32895426 -R[root@rac1 ~]# export PATH=$PATH:/u01/app/oracle/product/19.3.0/db_1 [root@rac1 ~]# /u01/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /u01/software/32895426 -oh /u01/app/oracle/product/19.3.0/db_1
==》二节点也是如此,二节点打补丁会失败,因为oui-patch.xml权限问题,给777然后回滚再打补丁即可(下次先赋权再打补丁这样应该就不会报错了)。
还有就是会报文件不存在啥的,需要到1节点对应的目录下scp –rp拷贝到二节点对应目录,然后直接再opatchauto apply即可。

09

升级数据字典,编译无效对象

加载修改后的sql到数据库:(二节点执行,因为二节点的实例挂了,RAC环境,只需要在一个节点执行就可以了)。
sqlplus /nologSQL> Connect / as sysdbaSQL> startupSQL> alter pluggable database all open;SQL> quitcd $ORACLE_HOME/OPatch./datapatch -verbose
datapatch命令只对打开的数据库生效,所有Oracle建议在执行该命令之前将CDB和所有的PDB都打开,一次更新掉。但如果有部分PDB没有打开,也可以在打开之后,重新运行datapatch命令并制定pdb实例名。
比如:./datapatch -pdbs dave。
编辑数据字典,处理无效对象:
最后一步就是处理无效对象,因为之前datapatch命令会加载SQL,这个过程可能会产生无效对象。可以执行@utlrp.sql脚本处理这些无效对象。

本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)


分享

收藏

点赞

在看

最后修改时间:2022-02-09 11:28:41
文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论