IBM Support

[Db2] root ユーザーで db2set コマンドなどが期待通り動作しないことがある

Question & Answer


Question

以前は root ユーザーで db2set コマンドが期待通り動作していましたが、バージョン・アップ後またはフィックス・パック適用後にコマンドが動作しなくなりました。 これはなぜでしょう。どうすれば以前のように動くようになりますか?

Cause

V10.1 以降、Windows を除くプラットフォームにおける DB2INSTDEF グローバル・レジストリーの扱いが数回変更されています。本来 DB2INSTDEF は Db2 Windows 版にのみ有効な変数ですが、歴史的に Unix/Linux 版でもこの変数が有効な操作が存在しました。

しかし、IT16602 で正式に Unix/Linux 版から DB2INSTDEF が取り除かれたため、これまで黙示的に現行インスタンスが決定されていた様々な操作が SQL1390N で失敗します。さらに、いくつかのコマンドは SQL1390N をユーザーに返さないため、エラーにならないものの期待通りの動作をしないことがあります。
IT16602 REMOVE THE SETTING OF DB2INSTDEF
IT05042 DB2INSTDEF SHOULD BE ENABLED ON NON-WINDOWS PLATFORMS

Db2 11.5 以降、マニュアルでも明示的に Unix/Linux 版は DB2INSTDEF をサポートしないと明記されています。
バージョン 11.5 で非推奨になった機能

Answer

マニュアルに明記されているように、Unix および Linux 版は DB2INSTANCE 環境変数を設定する必要があります。インスタンス・オーナーやアプリケーション・ユーザーは db2profile または db2cshrc によって正しい環境変数が設定されています。
root ユーザーで特定のインスタンスの db2profile を読み込むと、db2i* コマンドの動作に悪影響を与えます。db2set -g などを実行する場合は db2iset コマンドを使用してください。 例
# /opt/ibm/db2/<version>/instance/db2iset -g DB2SYSTEM=host01
関連情報
現行インスタンスの識別

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PlUAAU","label":"Database Objects-\u003EInstance"}],"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:
27 August 2023

UID

swg22008175