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

19C 节点2打补丁由于oui-patch.xml权限异常处理

原创 天马行空 2020-03-07
5119

本次搭建Oracle19C的数据库是以该平台:VMware虚拟机、RHEL7.4、19.3.0.0 、PSU 30557433的双节点的RAC。当第一个节点的GI、DB顺利打完补丁后,我就照着节点1的步骤对节点2进行打补丁。在进行节点2的DB补丁安装时,在快完成的时候报错了,从报错信息可以很容易的看出是/u01/app/oraInventory/ContentsXML/oui-patch.xml这个文件的权限导致的。
查看该文件的权限:

# ls -lrt /u01/app/oraInventory/ContentsXML/oui-patch.xml
	-rw-r--r--    1 grid     oinstall        174 Mar 6 12:50 /u01/app/oraInventory/ContentsXML/oui-patch.xml

对于oracle用户只有读的权限,所以导致IO异常,从opatch的日志也可以看出:

[OPSR-TIME] Finished modifying the system for patch 30557433                                                                                                                                                                                                
ApplySession adding interim patch '30557433' to inventory                                                                                                                                                                                                   
[OPSR-TIME] Saving patch 30557433 to inventory                                                                                                                                                                                                              
OUI-67124:ApplySession failed in system modification phase... 'ApplySession::apply failed: java.io.IOException: oracle.sysman.oui.patch.PatchException: **java.io.FileNotFoundException: /u01/app/oraInventory/ContentsXML/oui-patch.xml (Permission denied)**' 

原厂建议需进行手动修改该权限,改成660或者666:

# chmod 660 oui-patch.xm

手动改成666之后进行重跑opatch:

# ls -lrt
	total 16
	-rw-rw---- 1 grid oinstall 549 Mar  6 10:51 inventory.xml
	-rw-rw-rw- 1 grid oinstall 174 Mar  6 13:03 oui-patch.xml
	-rw-rw---- 1 grid oinstall 300 Mar  6 13:03 comps.xml
	-rw-rw---- 1 grid oinstall 292 Mar  6 13:03 libs.xml
# /u01/app/oracle/product/19c/db/OPatch/opatch apply -oh /u01/app/oracle/product/19c/db -local /u01/software/30557433

然而,这么操作并不行,从opatch log可以看到ORACLE_HOME/inventory/oneoffs/目录下一些文件不存在。

opatch-external.jar is in /u01/app/oracle/product/19c/db/OPatch/jlib/opatch-external.jar                                                                                                                                                                                          
 Unable to create patchObject                                                                                                                                                                                                                                                      
 Possible causes are:                                                                                                                                                                                                                                                              
ORACLE_HOME/inventory/oneoffs/30557433 is corrupted. PatchObject constructor: Input file "/u01/app/oracle/product/19c/db/inventory/oneoffs/30557433/etc/config/actions" or "/u01/app/oracle/product/19c/db/inventory/oneoffs/30557433/etc/config/inventory" does not exist.    
 OUI-67073:UtilSession failed: NApply was not able to get the list of patches to apply.                                                                                                                                                                                            
 Finishing UtilSession at Fri Mar 06 13:00:15 CST 2020                                                                                                                                                                                                                             

进了 ORACLE_HOME/inventory/oneoffs/目录进行查看,发现该目录下没有30557433:

#cd $ORACLE_HOME
# cd inventory/oneoffs/
# ls 
29517242  29585399  

重新对DB执行打补丁命令失败了,所以,个人认为对oui-patch.xm文件权限的修改一定要及时。既然不能重新打补丁,只能选择回滚了。

# /u01/app/oracle/product/19c/db/OPatch/opatch  rollback -id 30557433

然而这次回滚也失败了:

The details are:
Exception occured :     Unable to create patchObject
Possible causes are:
ORACLE_HOME/inventory/oneoffs/30557433 is corrupted. PatchObject constructor: Input file "/u01/app/oracle/product/19c/db/inventory/oneoffs/30557433/etc/config/actions" or "/u01/app/oracle/product/19c/db/inventory/oneoffs/30557433/etc/config/inventory" does not exist.

也是同样的问题:ORACLE_HOME/inventory/oneoffs/目录下没有30557433相关的文件。于是去节点1查看,日志中的actions跟inventory这两个文件记录了啥内容。actions文件记录了patch过程中的所有动作,包括打包、备份、删除和拷贝相关文件,而inventory则记录了相关bug描述、操作系统平台等信息。
不能重新patch也不能rollback。于是突发奇想,既然rollback需要使用ORACLE_HOME/inventory/oneoffs/30557433目录下相关的文件,那就把节点1的文件拷过来,然后再进行rollback,最后在再重新打补丁。

# su - oracle
       # scp -r node1:$ORACLE_HOME/inventory/oneoffs/30557433 $ORACLE_HOME/inventory/oneoffs/
       # /u01/app/oracle/product/19c/db/OPatch/opatch  rollback -id 30557433

[INFO]     Patches will be rolled back in the following order: 
                                       30557433
       .
       .
       .
       [INFO]     [OPSR-TIME] Backup area for restore has been cleaned up. For a complete list of files/directories 
                                    deleted, Please refer log file.                                          
[INFO]     UtilSession: N-Rollback done.                                                                     

从log上看确实删掉了好多30557433的相关内容。rollback结束后,先查看下目前的补丁情况:

# /u01/app/oracle/product/19c/db/OPatch/opatch lsinv
      # /u01/app/oracle/product/19c/db/OPatch/opatch version

查看补丁情况失败,再看看opatch版本,发现opatch被玩坏了。于是把节点2的整个Opatch文件夹删掉,然后从节点1拷贝新的OPatch过来。拷贝过来后先查看opatch版本和目前的补丁情况。

# rm -rf $ORACLE_HOME/OPatch/
       # scp -r node1:/u01/app/oracle/product/19c/db/OPatch  /u01/app/oracle/product/19c/db/
       # /u01/app/oracle/product/19c/db/OPatch/opatch version
       # /u01/app/oracle/product/19c/db/OPatch/opatch lsinv
	.
        .
        .
        Patch description:  "Database Release Update : 19.3.0.0.190416 (29517242)"
        Created on 17 Apr 2019, 23:27:10 hrs PST8PDT

目前补丁是更新到19.3.0.0.190416 。opatch可以正常使用了,那就可以继续打补丁了。

# ls -lrt
	total 16
	-rw-rw---- 1 grid oinstall 549 Mar  6 10:51 inventory.xml
	-rw-rw-rw- 1 grid oinstall 174 Mar  6 13:03 oui-patch.xml
	-rw-rw---- 1 grid oinstall 300 Mar  6 13:03 comps.xml
	-rw-rw---- 1 grid oinstall 292 Mar  6 13:03 libs.xml
      # /u01/app/oracle/product/19c/db/OPatch/opatch apply -oh /u01/app/oracle/product/19c/db -local /u01/software/30557433
      # /u01/app/oracle/product/19c/db/OPatch/opatch lsinv

执行opatch apply之前先查看下oui-patch.xml 这个文件的权限,别再采坑了。重新opatch apply可以正常进行,结束后再查看下补丁情况,发现补丁已经更新到19.6.0.0.200114 (30557433)。之后就可以继续进行打完补丁的后续步骤了。
以后再对节点2的DB进行PSU升级时,一定要先查看oui-patch.xml 这个文件的权限。想查看下该文件是啥时候创建的,无奈xfs文件系统不支持。把查看文件时间属性命令也贴上,方便以后查看。

# cd /u01/app/oraInventory/ContentsXML/                                                                                                                                                                      
 # stat oui-patch.xml                                                                         
   File: ‘oui-patch.xml’                                                                                                     
   Size: 174             Blocks: 8          IO Block: 4096   regular file                                                      
 Device: fd0ah/64778d    Inode: 134550981   Links: 1                                                                           
 Access: (0660/-rw-rw----)  Uid: ( 1000/    grid)   Gid: ( 1001/oinstall)                                                      
 Access: 2020-03-06 14:33:33.375372450 +0800                                                                                   
 Modify: 2020-03-06 14:25:38.877693174 +0800                                                                                   
 Change: 2020-03-06 14:25:38.877693174 +0800                                                                                   
  Birth: -                                                                                                                                                                                                                                         
 # df -h                                                                                      
 Filesystem                    Size  Used Avail Use% Mounted on                                                                
 /dev/mapper/rootvg-rootlv      10G   69M   10G   1% /                                                                         
 devtmpfs                      7.8G     0  7.8G   0% /dev                                                                      
 tmpfs                         6.0G  893M  5.2G  15% /dev/shm                                                                  
 tmpfs                         7.8G   17M  7.8G   1% /run                                                                      
 tmpfs                         7.8G     0  7.8G   0% /sys/fs/cgroup                                                            
 /dev/mapper/rootvg-usrlv      5.0G  1.5G  3.6G  29% /usr                                                                      
 /dev/sda2                     197M  115M   82M  59% /boot                                                                     
 /dev/sda1                     200M  9.8M  191M   5% /boot/efi                                                                 
 /dev/mapper/rootvg-optlv      2.0G   36M  2.0G   2% /opt                                                                      
 /dev/mapper/rootvg-tmplv      5.0G  113M  4.9G   3% /tmp                                                                      
 /dev/mapper/rootvg-homelv     5.0G   33M  5.0G   1% /home                                                                     
 /dev/mapper/rootvg-varlv      5.0G  183M  4.9G   4% /var                                                                                                                                    
 /dev/mapper/appvg-oralv        99G   27G   73G  27% /u01                                                                      
 tmpfs                         1.6G     0  1.6G   0% /run/user/0                                                               
 tmpfs                         1.6G     0  1.6G   0% /run/user/1000                                                            
                                                                                      
                                                                                                                       
 # debugfs -h                                                                                   
 debugfs 1.42.9 (28-Dec-2013)                                                                                                  
 debugfs: invalid option -- 'h'                                                                                                
 debugfs: Usage: debugfs [-b blocksize] [-s superblock] [-f cmd_file] [-R request] [-V] [[-w] [-c] device]                     
 # debugfs -R 'stat 134551068' /dev/mapper/appvg-oralv                                          
 debugfs 1.42.9 (28-Dec-2013)                                                                                                  
 /dev/mapper/appvg-oralv: Bad magic number in super-block while opening filesystem                                             
 stat: Filesystem not open                                                                                                     
                                                                  
 # statx oui-patch.xml   
 -bash: statx: command not found                    

最后修改时间:2020-03-07 18:05:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论