IBM Support

[Db2] フィックスパックの適用で db2chgpath が ETXTBSY(26) で失敗する

Troubleshooting


Problem

フィックスパックや special build の適用で、ファイル・セットの更新が「エラー: Db2 ランタイム・パスを設定中にエラーが起きました。」で失敗します。 これはなぜでしょう?どうすれば正しく適用できますか?

Symptom

installFixPack コマンドでフィックスパックや special build を適用すると、以下のようなエラーで失敗することがあります。
エラー: Db2 ランタイム・パスを設定中にエラーが起きました。技術サービス担当者に連絡してください。

Db2 ファイル・セットの更新 :.......失敗
/tmp/installFixPack.log.* を参照すると、db2chgpath が失敗したことがわかります。
Updating Db2 file sets :......Failure
 
ERROR: There were errors during the run of the db2chgpath
program to change the embedded runtime path of the
related DB2 library and executable files
from
 /opt/IBM/db2/V11.5/
to
 /opt/IBM/db2/V11.5/
 
You may need to manually retun db2chgpath.
 
Check the log file /tmp/db2chgpath.log.nnn for details.
/tmp/db2chgpath.log.* を参照すると、いくつかのライブラリーの変更が ETXTBSY (26) で失敗していることがわかります。
Starting the update of runtime path ...
Wed Jul 25 03:47:41 JST 2020

Changing the embedded runtime path for DB2 deliverables installed
under /opt/ibm/db2/V10.5 from /opt/ibm/db2/V11.5/ to /opt/ibm/db2/V11.5/
---> Please wait

db2chglibpath: Unable to open file for write: '/opt/ibm/db2/V11.5/lib64/libDB2xalanMsg111.0.a': error: 26(Text file busy)
db2chglibpath: Unable to open file for write: '/opt/ibm/db2/V11.5/security64/plugin/IBM/group/IBMOSgroups.a': error: 26(Text file busy)

Cause

installFixPack は、新しくインストールした実行可能ファイルやライブラリーの組み込みランタイム・パスを更新するために db2chgpath コマンドを実行します。

しかし、何らかのプロセスがこれらの実行可能ファイルやライブラリーを使用していた場合、db2chgpath は ETXTBSY (26) で失敗します。

フィックスパックや special build 適用前に、すべての Db2 プロセスを停止していない場合や、共有ライブラリー・セグメント (AIX) にライブラリーがロードされたままの場合、db2chgpath による ETXTBSY (26) は予期されています。

Environment

Db2 Linux and Unix 版のみ

Windows 版に db2chgpath はありません。また、Windows 版でファイルがロックされていた場合は、フィックスパック適用後に Windows を再起動するよう促され、再起動時にファイルの置き換えが実行されます。

Resolving The Problem

フィックスパックや special build 適用前に、Db2 ライブラリーをロードしているアプリケーションも含め、すべての Db2 プロセスを停止してください。停止方法はマニュアルの以下のページを参照してください。
すべての Db2 プロセスの停止 (Linux および UNIX)

注: AIX は slibclean コマンドで Db2 ライブラリーをアンロードしても、何らかの Db2 コマンドを実行すると、再度ライブラリーがロードされ同じエラーが発生します。このため、cron や JP1、TWS などのスケジューラーで Db2 コマンドを定期実行していると、フィックスパックの適用が失敗します。

なお、この問題に遭遇してフィックスパックや special build の適用に失敗した場合、Db2 プロセスの停止と Db2 プロセスの定期実行の停止、ライブラリーのアンロードを確認後、installFixPack に -f level オプションを追加して再実行してください。

運用上の考慮点
AIX や Linux で、どのようなライブラリーがロードされているかは、genld や lsof コマンドで確認できます。
詳しくは以下の Technote を参照してください。
InstallFixpack command fails with "ERROR: The installFixPack command detected some DB2 libraries are still loaded in memory"

関連情報
[Db2] パスポート・アドバンテージによく寄せられる質問
installFixPack - インストール済み Db2 データベース製品の更新コマンド
すべての Db2 プロセスの停止 (Linux および UNIX)

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008Pm7AAE","label":"Install\/Migrate\/Upgrade-\u003EFixpak"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"All Versions"}]

Document Information

Modified date:
26 August 2023

UID

swg22011034