Oracle DB 18c にOPatchを適用しようとしたところ、以下エラーが出現した際の対処法
Prerequisite check "CheckActiveFilesAndExecutables" failed.
The details are:
Following active executables are not used by opatch process :
/home/oracle/dbhome/product/bin/oracle
Following active executables are used by opatch process :
OUI-67073:UtilSessionが失敗しました: Prerequisite check CheckActiveFilesAndExecutables" failed.
Log file location: /home/oracle/dbhome/product/cfgtoollogs/opatch/opatch2020-05-07_21-11-00午後_1.log
##環境
Oracle Linux 6.10
Oracle Database 18c
適用したいパッチ: p30872794_180000_Linux-x86-64
##結果
opatchを利用して、patchをapplyする際は、ORACLE_HOMEを利用するプロセスはすべて終了している必要がある。もし、他のプロセスがORACLE_HOMEを利用している場合は73エラーがでてしまう。
そのため、ORACLE_HOMEを利用しているプロセスをkillすることで解決ができる。
##対処方法
###まず初めに使用しているプロセスを確認した
$ ps -ef | grep _orcl
oracle 10127 1 0 20:19 ? 00:00:00 ora_w004_orcl
oracle 9794 1 0 20:19 ? 00:00:00 ora_pmon_orcl
...
pmonなどのプロセスがずっと動いていることを確認。
合計で50個くらいのプロセスがあった。
それらをpid指定してそれぞれkillするのはとても時間と労力がかかるため、
まとめてkillできるよう以下を実行した。
$ for oud in $(ps -ef | awk '/_orcl/ {print $2}'); do kill -9 $pid; done
###もう一度プロセスを確認
$ ps -ef | grep _orcl
orclプロセスはすべてkillできたようだ。
そこでもう一度patch applyをしてみたところ、問題なく適用することができた!
###(補足)以下のようなエラーが出た場合
Following executables are active :
/oracle/app/oracle/product/12.1.0/dbtest/lib/libsqlplus.so
UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed.Prerequisite check "CheckActiveFilesAndExecutables" failed.
Log file location: /oracle/app/oracle/product/12.1.0/dbtest/cfgtoollogs/opatch/opatch2017-02-16_15-30-33PM_1.log
OPatch failed with error code 73
エラーログに記載されているactiveになってしまっている
/oracle/app/oracle/product/12.1.0/dbtest/lib/libsqlplus.so
のプロセスをkillする必要がある。
以下コマンドでPIDを特定
$ /sbin/fuser /oracle/app/oracle/product/12.1.0/dbtest/lib/libsqlplus.so
/oracle/app/oracle/product/12.1.0/dbtest/lib/libclntsh.so.12.1: 29275m
$ ps -ef | grep 29275
oracle 29275 29255 0 15:02:33 pts/2 0:00 sqlplus / as sysdba
oracle 13802 27442 0 15:33:16 pts/1 0:00 grep 29275
プロセスをkillする(複数ある場合はすべてkillする必要あり)
$ kill -9 29275
これでもう一度patch applyをしてみると、解決できるはずだ。
参考サイト
https://dbaclass.com/article/prerequisite-check-checkactivefilesandexecutables-failed/
https://ittutorial.org/opatch-failed-with-error-code-73-prerequisite-check-checkactivefilesandexecutables-failed-during-opatch-apply-30698487/