Database JUNKY

MySQL,MariaDBを中心としたブログです

DB2の接続が遅い場合

本日、思いっきりこの問題にぶち当たった気がする。相手は、Linuxで、クライアントはWindows。でも症状は似ている。。これってDB2 9系でも同じような気がしてきた。以下IBMから引用しました。

【概要】 Windowsプラットフォーム上のDB2 UDBにおいて、ローカルあるいはリモートからのデータベースの接続、または接続成功後の関数の呼び出しに、数分かかる場合があります

【対象】 DB2 for Windows クライアント/サーバー V8.1、V8.2

【発生環境】 Domain環境を構成しているWindowsプラットフォーム上のDB2

【原因】 接続に時間を要する、あるいは特定のAPIの処理に時間がかかる、複数の問題が報告されており、以下の問題に合致する可能性があります。 - JR20763: Slow connections when connecting with v8.1 FP7A client to z/OS (FP9 で修正) http://ibm.com/support/docview.wss?rs=71&uid=swg1JR20763 FixPak レベルにかかわらず、接続時に LookupAccountName API の処理で長時間かかることがあります。 データベース・カタログで AUTHENTICATION を明示して回避できますが、FP7 および FP8 はこの回避策が有効になりません。 - JR20293 Agents may appear to hang when executing a SYSIBM routine in an environment using domain users. (FP8 で修正) http://ibm.com/support/docview.wss?rs=71&uid=swg1JR2029 3 SYSIBM スキーマの関数が呼ばれると、LookupAccountName APIの処理で長時間かかることがあります。 Microsoft Access などの ODBC アプリケーションは、接続後に SQLTables など多数のカタログ関数を呼びだします。 DB2 V8 クライアントはカタログ関数を SYSIBM スキーマのストアドプロシージャにマップするため、接続に時間がかかったように見えることがあります。 - JR23272: DB2_GRP_LOOKUP=LOCAL RESULTS IN SLOW CONNECT/AUTHENTICATION IN V8.2 (未修正) http://ibm.com/support/docview.wss?rs=71&uid=swg1JR23272 DB2_GRP_LOOKUP=LOCAL を設定していると接続に時間がかかることがあります。 【対応方法】 それぞれの問題に該当する対処方法は以下の通りです。

前提: 特に大きなドメインに参加している場合や、ドメインコントローラとの通信に問題がある場合に LookupAccountName で時間がかかることは Windows の仕様です。 以下の APAR は、不要な LookupAccountName 呼び出しを行う問題を修正します。 正常な場合でも、AUTHENTICATION オプションを指定せずにデータベースをカタログすると LookupAccountName が呼び出されます。 このため、Windows クライアントでは AUTHENTICATION オプションを指定してデータベースをカタログすることを推奨します。

CATALOG DATABASE コマンド http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/core/r0001936.htm - JR20763 (対象:FP7 および FP8 Windows クライアント) 以下の1、2のいずれかの対応を実施します。 1. FP9 以降の FixPak を適用します。 2. データベースを AUTHENTICATION オプションを指定して再カタログします。認証タイプはデータベース・サーバーと一致させます。 db2 uncatalog database <db_name> db2 catalog database <db_name> at node <node_name> authentication SERVER db2 terminate  - JR20293 (対象:FP8 未満の Windows サーバー) 一時的な回避策 データベース・サーバーにログオンし、SYSIBM ユーザーを作成します。 C:&gt; net user SYSIBM /add 恒久的な対処方法 FixPak 8 以降を適用します。  - JR23272 (対象:FP7 以降の Windows サーバー) 一時的な回避策 以下の1、2、3いずれかの設定を変更します。 1. ドメインユーザーを DB2ADMNS グループに追加 net localgroup DB2ADMNS "<domain_name>&lt;user_name>" /add 2. DB2_GRP_LOOKUP レジストリ変数を TOKEN に変更 db2set DB2_GRP_LOOKUP=TOKEN db2stop db2start 3. DB2 の拡張セキュリティ機能を OFF db2set DB2_EXTSECURITY=NO db2stop db2start 恒久的な対処方法 JR23272 が含まれる FixPak を適用します。