共用メモリー・セグメントの増加

WebSphere® Business Monitor が AIX® プラットフォーム上でイベントを処理しようとすると、SQL エラーが戻されます。また、WebSphere が開始またはイベント処理中にデータベース接続の初期化に失敗したときにも戻されます。 この障害は、IBM® DB2® が使用可能な共用メモリー・セグメントの数についてオペレーティング・システムによって課される制限の結果として発生します。

WebSphere 管理コンソール (JDBC リソース) からの Test Connection が次のエラーで失敗した場合:
Test connection failed for data source MonitorDataSource on server server1 at
node Node01 with the following exception: java.lang.Exception:
java.sql.SQLException: SQL1224N A database agent could not be started to
service a request, or was terminated as a result of a database system shutdown
or a force command. SQLSTATE=55032 DSRA0010E: SQL State = 55032, Error
Code = -1,224.
このエラーは、AIX によってデータベースに対して許可されている共用メモリー・セグメント数の超過を示していると考えられます。

このエラーが発生したときは、DB2 構成を変更して共用メモリー・セグメントの数を増加させる必要があります。現在リカバリー・エキスパートは、共用メモリーの問題を回避するために、ループバックを使用した DB2 別名の定義を使用することをサポートしていません。

解決策

DB2 では、この問題を回避する拡張共用メモリー機能が使用されています。 この機能を使用可能にするには、/etc/rc.db2 および <instance_home>/sqllib/db2profile (ここで <instance_home> はそれぞれのインスタンス・ユーザーのホーム・ディレクトリー。例: /home/db2inst1) 両方の先頭付近の、ブロック・コメントの後、どの実行可能行よりも前に、以下の行を配置します。
# Local addition to fix AIX shared memory problem:
EXTSHM=ON
export EXTSHM
注: エントリーは大/小文字が区別されます。すべてのインスタンス・ユーザーおよび管理者サーバー・ユーザーの db2profiles にエントリーを配置します。 次に、それぞれのインスタンス・ユーザーおよび管理者サーバー・ユーザーとしてログインし、次のコマンドを実行します。
db2set DB2ENVLIST=EXTSHM

これにより、それぞれのインスタンス内に DB2 プロファイル変数が設定され、EXTSHM 環境変数の値が DB2 デーモン・プロセスの開始時に環境に組み込まれるようになります。 ログイン時に実行されるそれぞれのインスタンスの db2profiles で EXTSHM を定義すると、変数がインスタンス所有者の環境に確実に設定されます。 最後に、それを /etc/rc.db2 に書き込むと、起動時に DB2 のプロセスが開始したときに確実に変数が設定されます。最後に、システムを再始動して、確実にすべての DB2 のプロセスがそれらの環境で EXTSHM=ON を使用して開始されるようにします。

将来の新規インスタンス作成時に修正が自動的に適用されるようにする場合は、ファイル /usr/lpp/db2_08_02/cfg/db2profile に EXTSHM を設定してエクスポートする数行を追加します。このファイルはインスタンス作成時に <instance_home>/sqllib/db2profile にコピーされます。 また、確実に DB2ENVLIST プロファイル変数も設定されるようにするためには、次のコードを変数 INSTHOME の設定の後に追加します。
if [ -x $INSTHOME/sqllib/adm/db2set ]
then if [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ]
then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM
fi
fi
このコードにより、新規インスタンスが初めて使用されたときに DB2ENVLIST インスタンス・プロファイル変数が設定されるようになります。
注:
  • DB2Version 8.0 が /usr/lpp/db2_08_02 の下にインストールされていることを前提としています。 ご使用のインストール済み環境が別の場所にある場合は、ご使用のインストール・ロケーションで作業をする必要があります。
  • DB2 バージョン 8.0 の場合、<instance_home>/sqllib/userprofile ファイルが存在する場合はそのファイルに以下の行を追加する必要があります。存在しない場合は、許可 755 でユーザー・プロファイル・ファイルを作成します。行は次のとおりです。
    EXTSHM=ON
    export EXTSHM

Copyright IBM Corporation 2005, 2006. All Rights Reserved.