Prerequisite check "CheckActiveFilesAndExecutables" failed

2021年7月22日 505点热度 0人点赞 0条评论

在后期打patch时常见的一个错误是:
Prerequisite check "CheckActiveFilesAndExecutables" failed.
如果在服务端有相关的进程在运行,从而占用可执行文件或运行库,会导致升级时无法更新相应的文件,从而升级失败,报出如上错误。
一般是很容易通过fuser、lsof查出相关的进程的,但有一个情形是无法查出来,只能用fuser查看指定的运行库如libclntsh.so来确定是否占用运行库,如下例。
/u01/app/oracle/product/12.2.0/db_1/OPatch/opatchauto apply /u01/soft/patch/31305339 -oh /u01/app/oracle/product/12.2.0/db_1
报如上错误后,常规手段竟然查不出相关的进程!执行如下:

fuser /u01/app/oracle/product/12.2.0/db_1/lib/libclntsh.so
/u01/app/oracle/product/12.2.0/db_1/lib/libclntsh.so.19.1: 28318m
[root@rac2:1 /u01/app/oracle/product/12.2.0/db_1/lib]# ps -ef|grep 28318
root     24701 17001  0 10:06 pts/1    00:00:00 grep --color=auto 28318
oracle   28318 28187  0 Jul16 pts/0    00:00:11 sqlplus   as sysdba

可见有一个sqlplus客户端在使用运行库文件!
杀掉这个进程,resume即可:
/u01/app/oracle/product/12.2.0/db_1/OPatch/opatchauto resume

liking

我是雪人

文章评论