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 で非推奨になった機能
バージョン 11.5 で非推奨になった機能
Answer
マニュアルに明記されているように、Unix および Linux 版は DB2INSTANCE 環境変数を設定する必要があります。インスタンス・オーナーやアプリケーション・ユーザーは db2profile または db2cshrc によって正しい環境変数が設定されています。
root ユーザーで特定のインスタンスの db2profile を読み込むと、db2i* コマンドの動作に悪影響を与えます。db2set -g などを実行する場合は db2iset コマンドを使用してください。 例
root ユーザーで特定のインスタンスの db2profile を読み込むと、db2i* コマンドの動作に悪影響を与えます。db2set -g などを実行する場合は db2iset コマンドを使用してください。 例
# /opt/ibm/db2/<version>/instance/db2iset -g DB2SYSTEM=host01
[{"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"}]
Was this topic helpful?
Document Information
Modified date:
27 August 2023
UID
swg22008175