这篇文章主要讲解了“如何打补丁PSU”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何打补丁PSU”吧!
首先说一下下载补丁和最新opatch的方法:
都再mos上:
下载补丁:直接搜索2118136.2,这是文档id
下载optach:点击补丁程序和更新程序标签,然后搜索6880880
接下来我们说下常用到的PSU:
我们这里之说linux的,主要有DB,GI+DB,GI+DB+OJVM
然后我们来说补丁安装:
其实,就是在这里翻译一下readme.html,这里主要介绍一下GI+DB(+OJVM)
OJVM记住一点就好,要单独用oracle用去打,并且,这个是不支持rolling upgrade的,也就是说,集群必须都得停。
然后说GI+DB:
首先,不管咋说,都要先查看opatch的版本
grid用户跟oracle用户都要查,在各自的$ORACLE_HOME/OPatch/下:
./opatch version
然后用这个version,比对readme里面要求的该补丁至少需要啥版本的opatch。要我说,直接那最新的opatch升了就对了,升级opatch的方法:
下载对应系统版本的OPatch,然后在grid和oracle用户下都要执行,因为各是各的Opatch工具:
unzip 压缩包 -d $ORACLE_HOME
然后选择全部覆盖,就是输入一个A就ok了
然后要生成一个rsp文件,反正就grid下生成嘛:(12.2.0.1.5以上版本就不用了)
$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output /opt/ocm.rsp
反正就是这个rsp不管放哪儿,必须保证oracle用户和grid用户都能访问的到,后面说为啥
然后一切准备就绪,root用建个空目录,一定得是个空目录,比如:
mkdir /GI
然后把压缩包拷到这个目录下,给个777权限:
chmod 777 -R /GI
然后用grid用户解压补丁包就解压在这个路径下:
su - grid
cd /GI
unzip 补丁包
一般来说,grid home和oracle home都不是share的,如果有acfs,不管咋说,都得先umount,然后我们就用opatch auto直接打,这里我们用rolling upgrade的方式,就是一个节点一个节点的打,不用停业务。
按文档的方法是,咋说也得先把em停了,
然后以root用户的身份执行:
grid的$ORACLE_HOME/OPatch/opatch auto /GI/GI+DB的目录 -ocmrf /opt/ocm.rsp
完事儿以后在grid用户下,oracle用户下,分别执行:
$ORACLE_HOME/OPatch/opatch lspatches
看看补丁打上没,然后所有节点执行完事儿。
然后在一个节点上执行脚本:
@?/rdbms/amdin/catbundle.sql psu apply
@?/rdbms/admin/utlrp.sql(这个主要时为了重新编译一些java相关的失效的对象)(有时间执行,没时间就算)
然后查一下dba_registry_history,有新的补丁记录就对了,完事儿。
现在解释一下readme中的这个opatch auto:
首先你如果你没有建那个空目录的话,系统就要问你到底是解没解压到一个空目录啊,你确认俩次,因为它是要自己检索每个目录,然后对应的打补丁。
然后,它会把em停,数据库实例停了,asm实例停了,节点停了
接着,它会用grid的用户指定oh=grid_home给GI打补丁,再用oracle用户指定oh=oracle_home给DB打补丁,其中还要以root身份执行对集群操作的脚本,所以这就是为什么:
一定要用root执行打补丁!一定要把ocm.rsp文件放在grid和oracle都能访问的路径!(oracle用户是访问不到/home/grid/下的)
打完补丁,然后把集群起起来,数据库也起起来,em也起起来。
所以说白了,要按readme的方式来,啥都不用停,把acfs umount了就可以。
但是为了保险,避免诸多不可预见的问题,建议如下做:
在要打补丁的节点上,停em,停数据库实例,
sqlplus / as sysdba
shutdown immediate
exit
grid的$ORACLE_HOME/OPatch/opatch auto /GI/GI+DB的目录 -oh grid_home的路径展开(就是意思别直接写$ORACLE_HOME) -ocmrf /opt/ocm.rsp
oracle的$ORACLE_HOME/OPatch/opatch auto /GI/GI+DB的目录 -oh oracle_home的路径展开(就是意思别直接写$ORACLE_HOME) -ocmrf /opt/ocm.rsp
然后lspatches检查,
然后起数据库实例,再到下一个节点停数据库实例
所有节点都打完补丁,再在一个节点上执行脚本,把补丁注册到数据库中。
感谢各位的阅读,以上就是“如何打补丁PSU”的内容了,经过本文的学习后,相信大家对如何打补丁PSU这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!