阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle打Patch报错Prerequisite check “CheckActiveFilesAndExecutables” failed.

195次阅读
没有评论

共计 2325 个字符,预计需要花费 6 分钟才能阅读完成。

给几个测试库打补丁,停完监听和实例后查看已经没有 Oracle 的进程了,于是执行 opatch apply。但执行报如下错误:

$ opatch apply
Oracle Interim Patch Installer version 11.2.0.3.12
Copyright (c) 2017, Oracle Corporation.  All rights reserved. 
 
Oracle Home      : /opt/oracle/app/oracle/product/11.2.4/db_1
Central Inventory : /opt/oracle/app/oracle/oraInventory
  from          : /opt/oracle/app/oracle/product/11.2.4/db_1/oraInst.loc
OPatch version    : 11.2.0.3.12
OUI version      : 11.2.0.4.0
Log file location : /opt/oracle/app/oracle/product/11.2.4/db_1/cfgtoollogs/opatch/opatch2017-03-29_00-16-10AM_1.log
 
Verifying environment and performing prerequisite checks…
Prerequisite check “CheckActiveFilesAndExecutables” failed.
The details are: 
 
Following executables are active :
/opt/oracle/app/oracle/product/11.2.4/db_1/lib/libclntsh.so.11.1
UtilSession failed: Prerequisite check “CheckActiveFilesAndExecutables” failed.
Log file location: /opt/oracle/app/oracle/product/11.2.4/db_1/cfgtoollogs/opatch/opatch2017-03-29_00-16-10AM_1.log

Oracle 的相关进程已经没有了
[bbtst3s oracle@tst3 /home/oracle]
$ ps -ef |grep ora
  oracle  8608  8606  0 02:04:59 ?        0:00 sshd: oracle@pts/2
  oracle  8796 19274  0 02:05:24 ?        0:00 sleep 15
  oracle 19274    1  3  Dec 20  ?        967:38 /bin/sh ./OSWatcher.sh 15 192
  oracle  8825  8610  0 02:05:35 pts/2    0:00 grep ora
  oracle  8668 19319  0 02:05:03 ?        0:00 sleep 60
  oracle  8824  8610  2 02:05:35 pts/2    0:00 ps -ef
  oracle  8610  8608  0 02:04:59 pts/2    0:00 -ksh
  oracle 19319 19274  0  Dec 20  ?        23:31 /bin/sh ./OSWatcherFM.sh 192 /opt/bboss/tst3/oracle/arch/oswatcher/oswbb/archive
    root  8606 21662  0 02:04:56 ?        0:00 sshd: oracle [priv]

于是使用 fuser 查看
$ fuser /opt/oracle/app/oracle/product/11.2.4/db_1/lib/libclntsh.so.11.1
/opt/oracle/app/oracle/product/11.2.4/db_1/lib/libclntsh.so.11.1:    29888m

看到文件确实被占用了,但不知道是被哪个进程占用的,再使用 lsof 命令
$ ./lsof /opt/oracle/app/oracle/product/11.2.4/db_1/lib/libclntsh.so.11.1

执行完后没有结果,这就没办法查了。
于是请教了同事,他用使用 root 用户去执行 lsof 命令,而且只指定到最上一层的目录去查
# lsof /opt 
COMMAND    PID    USER  FD  TYPE DEVICE  SIZE/OFF  NODE NAME
RaterServ 29888    rate3  mem    REG 64,0×6  10800648  85874 /opt/oracle/app/oracle/product/11.2.4/db_1/lib/libnnz11.so
RaterServ 29888    rate3  mem    REG 64,0×6 121875400 324102 /opt/oracle/app/oracle/product/11.2.4/db_1/lib/libclntsh.so.11.1

从上面的输出结果可以看出来确实是有进程在占用,进程号是 29888。
再查 29888 对就的进程名
# ps -ef |grep 29888
找到是应用的一个服务,与测试沟通后,这个进程可以直接 kill,于是
kill -9 29888
再次执行 opatch apply 成功。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142325.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2325字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中