资讯专栏INFORMATION COLUMN

19c打19.12补丁步骤

IT那活儿 / 3629人阅读
19c打19.12补丁步骤

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


01

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


[grid@rac1 ~]$ crsctl query crs softwareversion
Oracle Clusterware version on node [rac1] is [19.0.0.0.0]
[grid@rac1 ~]$ crsctl query crs releaseversion
Oracle High Availability Services release version on the local node is [19.0.0.0.0]
[grid@rac1 ~]$ crsctl query crs releaseversion
Oracle High Availability Services release version on the local node is [19.0.0.0.0]

[grid@rac1 OPatch]$ ./opatch lspatches
29585399;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 version
OPatch 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 version
OPatch Version: 12.2.0.1.25

OPatch 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]$ ll
total 2789536
drwxr-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.zip
chown grid:oinstall /u01/software/32895426 -R
chmod 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.xml
chmod 777 /u01/app/19.3.0/grid/crs/install/cmdllroot.sh

chmod 777 /etc/oracleafd.conf
chown grid:oinstall /etc/oracleafd.conf
chown 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 -R
chmod 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 /nolog
SQL> Connect / as sysdba
SQL> startup

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

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


分享

收藏

点赞

在看

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129669.html

相关文章

  • Nginx修复漏洞补丁过程

    摘要:漏洞报告最近收到安全部门的安全扫描报告。远程攻击者可利用该漏洞获取敏感信息或造成拒绝服务。厂商补丁目前厂商已发布升级补丁以修复漏洞,补丁获取链接一个高危漏洞,赶紧网上查询下资料这准备修复。 漏洞报告 最近收到安全部门的安全扫描报告。内容如下: nginx 安全漏洞(CVE-2018-16845) 中危 nginx类 nginx是由俄罗斯的程序设计师Igor Sysoe...

    Pandaaa 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<