通信変数

通信変数を使用すると、Db2® ネットワーク接続上のデータ・フロー、および Db2 環境自体のデータ・フローを制御するのに役立ちます。通信変数を設定することにより、TCP/IP の設定やコミュニケーション・マネージャーのアクティビティーなど、デフォルトの動作を制御できます。

DB2_ALLOW_WLB_WITH_SEQUENCES
  • オペレーティング・システム: すべて
  • デフォルト = NO。値: NOYES
  • このレジストリー変数は、シーケンスにアクセスするアプリケーションがワークロード・バランシングに参加することを許可するかどうかを制御します。

    DB2_ALLOW_WLB_WITH_SEQUENCESNO に設定した場合、SQL シーケンス・ステートメントで PREVIOUS VALUE または NEXT VALUE を参照するアプリケーションは、ワークロード・バランシングへの参加を妨げられます。

    DB2_ALLOW_WLB_WITH_SEQUENCES を YES に設定した場合、SQL シーケンス・ステートメントで PREVIOUS VALUE または NEXT VALUE を参照するアプリケーションは、ワークロード・バランシングへの参加を妨げられません。 アプリケーションは PREVIOUS VALUE FOR sequence 式を使用して前のシーケンス値を参照する前に、NEXT VALUE FOR sequence 式を使用してトランザクションの次のシーケンス値を生成する必要があります。 アプリケーションはワークロード・バランシングに参加できるので、各トランザクションは新しいセッションまたは異なるセッションで実行される可能性があります。 次のシーケンス値をまず生成することなくトランザクションの前のシーケンス値にアクセスすると、SQL0845N エラーになります。

    Db2 pureScale® 環境におけるシーケンスに関する考慮事項は以下のとおりです。

    Db2 pureScale 環境では、CACHE オプションと NO ORDER オプションを使用すると、複数のキャッシュが同時にアクティブになる可能性があります。 複数の異なるメンバーから次の値の要求があると、値の割り当てが厳密な数値順にならない可能性があります。 例えば、メンバーの DB2A と DB2B が同じシーケンスを使用しているとします。DB2A はキャッシュ値として 1 から 20 を取得し、一方 DB2B はキャッシュ値として 21 から 40 を取得します。 DB2A が最初にその次の値を要求した後、DB2B が要求し、その後で DB2A がもう一度要求した場合、割り当てられる値の順序は 1、21、2 になります。

    ORDER オプションまたは NO CACHE オプションを使用すると、複数のメンバー間で 1 つ以上のアプリケーションによって共有されるシーケンスに割り当てられる値は、厳密な数値順になります。 ORDER を指定した場合は、CACHE n が指定されていても、NO CACHE が暗黙指定されます。

DB2CHECKCLIENTINTERVAL
  • オペレーティング・システム: すべて、ただしサーバーのみ
  • デフォルト = 100。値: ゼロ以上の数値。
  • この変数は、アクティブ・トランザクション中の TCP/IP クライアント接続検査の頻度を指定します。 照会完了まで待つ代わりに、クライアント終了を早期に検出できるようにします。 この変数が 0 に設定されている場合、検査は実行されません。

    低い値ほどチェックが頻繁になります。 低い頻度の場合は 100、中位の頻度の場合は 50、 高い頻度の場合は 10 を目安にしてください。 値は内部 Db2 メトリックで測られます。値は線形スケールを表します。つまり、値が 50 から 100 に増えると、間隔は 2 倍になります。データベース要求の実行中に、 クライアントの状況を頻繁にチェックすればするほど、 照会が完了するまでの時間が長くなります。 Db2 のワークロードが重い (内部要求が多い) 場合、DB2CHECKCLIENTINTERVAL に低い値を設定すると、ワークロードが軽い状況よりも、パフォーマンスに重大な影響があります。

Db2COMM
  • オペレーティング・システム: すべて、ただしサーバーのみ
  • デフォルト = NULL。値: NPIPETCPIPSSL
  • この変数は、データベース・マネージャーを開始したときに開始されるコミュニケーション・マネージャーを指定します。 この変数を指定しないと、サーバーではどの Db2 コミュニケーション・マネージャーも開始されません。 この変数には、コンマ区切りで任意の値を組み合わせて設定できます。
    注:NPIPE が有効なのは、Windows オペレーティング・システムだけです。
DB2FCMCOMM
  • オペレーティング・システム: サポートされる Db2 Enterprise Server Edition プラットフォームのすべて
  • デフォルト = TCPIP4。値: TCPIP4 または TCPIP6
  • この変数は、db2nodes.cfg ファイル内のホスト名がどのように解決されるかを指定します。 すべてのホスト名は IPv4 または IPv6 として解決されます。 ホスト名の代わりに IP アドレスが db2nodes.cfg に指定されている場合は、IP の形式から IPv4 が使用されているか IPv6 が使用されているかがわかります。 DB2FCMCOMM が設定されていない場合、IPv4 のデフォルト設定値は、IPv4 ホストのみ開始できることを意味します。
    注: db2nodes.cfg で指定されたホスト名から解決した IP の形式や db2nodes.cfg で直接指定されている IP の形式が DB2FCMCOMM の設定と一致しない場合は、db2start が失敗します。
DB2_FORCE_NLS_CACHE
  • オペレーティング・システム: AIX®、HP_UX、Solaris
  • デフォルト = FALSE。値: TRUE または FALSE
  • この変数は、マルチスレッド・アプリケーションにおいてロック競合が起きないようにするために使用します。 レジストリー変数が TRUE の場合、 スレッドが初めてコード・ページとテリトリー・コードの情報にアクセスする際にそれらの情報が保管されます。その時点以降、 この情報を要求する他のスレッドにこのキャッシュ情報が使用されます。 したがってロック競合は除かれ、 特定の状態下でパフォーマンスが向上することになります。 アプリケーションにより接続間のロケール設定が変更される場合、 この設定値は使用できません。 マルチスレッド・アプリケーションでロケール設定を変更するのはスレッド・セーフ ではないので普通はこの変更は行われません。 したがってこのような状態は考慮する必要がないと思われます。
DB2_PMODEL_SETTINGS
  • オペレーティング・システム: すべて
  • この変数を変更すると、それはその後コンパイルされるすべての SQL ステートメントに対してただちに有効になります。 インスタンスを再始動したり、db2set コマンドに -immediate パラメーターを付けて発行したりする必要はありません。
  • このレジストリー変数は、Db2 内部インフラストラクチャーのさまざまな側面の動作を変更できる一連のパラメーターを制御します。 パラメーターは、次の例のように、セミコロンで区切ります。
    db2set
    DB2_PMODEL_SETTINGS=MLN_REMOTE_LISTENER:TRUE;ENHANCED_ROLLBACK:TRUE;SRVLST_EQUAL_WEIGHT:TRUE
  • パラメーター:
    ENHANCED_ROLLBACK
    • デフォルト: FALSE
    • 値: TRUEFALSE
    • ENHANCED_ROLLBACK パラメーターは、パーティション・データベース環境にある Db2 サーバー上の作業単位のロールバック動作を改善するために使用します。 このオプションを TRUE に設定すると、作業単位のロールバック要求は、トランザクションに関係していた論理データベース・パーティションにのみ送信されます。
    MLN_REMOTE_LISTENER
    • デフォルト: FALSE
    • 値: TRUEFALSE
    • MLN_REMOTE_LISTENER パラメーターは、各論理データベース・パーティション上で TCP/IP リスナーを開始するために使用します。このオプションを TRUE に設定すると、アプリケーションは、論理ポート 0 に割り当てられるデータベース・パーティション・サーバーを経由して要求を経路指定する代わりに、各論理データベース・パーティションに直接接続できます。

      このオプションを TRUE に設定する場合は、追加の TCP/IP リスナーが、他のサービスで必要なポートを使用しないことを確認してください。

    SRVLST_EQUAL_WEIGHT
    • デフォルト: FALSE
    • 値: TRUEFALSE
    • SRVLST_EQUAL_WEIGHT パラメーターは、サーバー・リスト内でのメンバーのゼロでない重みを常に同じにしたい場合に使用します。これにより、負荷に基づいてメンバーの重みが計算されるデフォルトの動作をオーバーライドできます。 サーバー・リストに格納されるメンバーの重みは、ワークロード・バランシング (WLB) が有効になっている場合にワークロードを分散するためにリモート・クライアントによって使用されます。

      このオプションを TRUE に設定すると、クライアントでの WLB は、メンバーの負荷に関係なく、メンバー間での均等なワークロード分散に変更されます。

DB2RSHCMD
  • オペレーティング・システム: UNIX、Linux
  • デフォルト = rsh (HP-UX では remsh)。値は rshremsh、または ssh までの絶対パス名です。
  • デフォルトでは、Db2 データベース・システムはリモート・データベース・パーティションの開始時に rsh を通信プロトコルとして使用し、db2_all スクリプトを使用してすべてのデータベース・パーティションでユーティリティーおよびコマンドを実行します。 例えば、このレジストリー変数を ssh の絶対パス名に設定すると、Db2 データベース製品は要求されたユーティリティーおよびコマンドを実行するための通信プロトコルとして ssh を使用します。また、適切なデフォルトのパラメーターを使用して、リモート・コマンド・プログラムを呼び出すスクリプトの絶対パス名に設定することもできます。この変数が必要なのは、パーティション・データベースの場合、または Db2 製品のインストール先とは異なるサーバーから db2start コマンドを実行する単一パーティション環境、 および Db2 インスタンスを開始、停止、またはモニターできる rsh または ssh に依存するユーティリティー (db2gcf など) の場合に限られます。 インスタンス所有者は、指定されたリモート・シェル・プログラムを使用して、 各 Db2 データベース・ノードから他の Db2 データベース・ノードへ、 追加の検査または認証 (つまり、パスワードまたはパスワード句) を要求するプロンプトが出されることなく、ログインできなければなりません。

ssh シェルを Db2 と共に使用するように DB2RSHCMD レジストリー変数を設定する手順の詳細は、Configure DB2 Universal Database for UNIX to use OpenSSH というホワイト・ペーパーを参照してください。

DB2RSHTIMEOUT
  • オペレーティング・システム: UNIX、Linux
  • デフォルト = 30 秒。値: 1 から 120
  • この変数が適用できるのは、Db2RSHCMD が非 NULL 値に設定されている場合のみです。このレジストリー変数を使用して、Db2 データベース・システムが任意のリモート・コマンドを待機するタイムアウト期間を制御します。 このタイムアウト期間が過ぎても応答を受け取らない場合には、リモート・データベース・パーティションに到達できず、操作が失敗したとみなされます。
    注: 指定される時間値は、リモート・コマンドを実行するために必要な時間ではありません。要求を認証するために必要な時間です。
DB2SORCVBUF
  • オペレーティング・システム: すべて
  • デフォルト = 65 536
  • TCP/IP 受信バッファーの値を指定します。
DB2SOSNDBUF
  • オペレーティング・システム: すべて
  • デフォルト = 65 536
  • TCP/IP 送信バッファーの値を指定します。
DB2TCP_CLIENT_CONTIMEOUT
  • オペレーティング・システム: すべて、ただしクライアントのみ
  • デフォルト = 0 (タイムアウトなし)。値: 0 から 32 767
  • DB2TCP_CLIENT_CONTIMEOUT レジストリー変数は、クライアントが TCP/IP 接続操作の完了を待機しなければならない秒数を指定します。 TCP/IP 経由のデータベース接続操作には、connect() と recv() の両方のソケット・サブルーチンが関係します。 データベース・マネージャーは、connect() サブルーチンがタイムアウトになった場合に -30081 selectForConnectTimeout エラーを返し、recv() サブルーチンがタイムアウトになった場合に -30081 selectForRecvTimeout エラーを返します。

    レジストリー変数が設定されていないか、または 0 に設定されている場合は、タイムアウトはありません。

    注: オペレーティング・システムにも接続タイムアウト値があります。 これは、DB2TCP_CLIENT_CONTIMEOUT を使って設定したタイムアウトより前に実施される場合があります。例えば、AIX はデフォルト tcp_keepinit=150 (0.5 秒単位) を持ち、75 秒後に接続が終了します。
  • この変数を変更すると、それはその後コンパイルされるすべての SQL ステートメントに対してただちに有効になります。 インスタンスを再始動したり、db2set コマンドに -immediate パラメーターを付けて発行したりする必要はありません。
DB2TCP_CLIENT_KEEPALIVE_TIMEOUT
  • オペレーティング・システム: AIX、HP-UX、Linux、Windows (クライアントのみ)
  • デフォルト = 15。 値: 0 - 32 767
  • Db2TCP_CLIENT_KEEPALIVE_TIMEOUT レジストリー変数は、ソケットがアイドル状態のままでいることができる (つまり、キープアライブ・プローブに応答しないために応答なしと見なされるまでの) 合計時間 (秒数) に相当します。ソケットは、応答なしと見なされると、Db2 によって強制終了させられます。これは、サーバー側で設定する Db2TCP_SERVER_KEEPALIVE_TIMEOUT に相当するクライアント側の変数です。

    この変数が設定されていない場合は、デフォルトの設定である 15 秒が使用されます。KeepAliveTimeout キーワードを 0 に設定すると、オペレーティング・システムに設定されているキープアライブ設定が有効になります。 この変数を設定した場合、db2dsdriver.cfg ファイルで指定されているすべての keepAliveTimeout 設定より優先されます。

    この変数を変更すると、それはその後のサーバーへのすべての TCP/IP 接続とアタッチに対してただちに有効になります。

DB2TCP_CLIENT_RCVTIMEOUT
  • オペレーティング・システム: すべて、ただしクライアントのみ
  • デフォルト = 0 (タイムアウトなし)。値: 0 から 32 767
  • DB2TCP_CLIENT_RCVTIMEOUT レジストリー変数は、クライアントが TCP/IP 上のデータを受信する操作を待つ秒数を指定します。指定された秒数内にサーバーからデータが受信されない場合、Db2 データベース・マネージャーはエラー -30081 selectForRecvTimeout を戻します。

    レジストリー変数が設定されていないか、または 0 に設定されている場合は、タイムアウトはありません。

    注: DB2TCP_CLIENT_RCVTIMEOUT の値は、db2cli.ini キーワード ReceiveTimeout または接続属性 SQL_ATTR_RECEIVE_TIMEOUT を使用することにより、CLI でオーバーライドできます。
  • この変数を変更すると、それはその後コンパイルされるすべての SQL ステートメントに対してただちに有効になります。 インスタンスを再始動したり、db2set コマンドに -immediate パラメーターを付けて発行したりする必要はありません。
DB2TCPCONNMGRS
  • オペレーティング・システム: すべて
  • デフォルト = 1 (シリアル・マシンの場合); 最大で 16 つの接続マネージャーに切り上げられたプロセッサー数の平方根 (SMP マシンの場合)。値: 1 から 16
  • このレジストリー変数が設定されていない場合、 デフォルトの数の接続マネージャーが作成されます。 このレジストリー変数が設定されていれば、 ここで割り当てた値がデフォルト値を上書きします。 指定された数 (最大 16) の TCP/IP 接続マネージャーが作成されます。1 より小さい値が指定された場合、 DB2TCPCONNMGRS には値 1 が設定され、 値が範囲外であることを示す警告がログに記録されます。 16 より大きい値が指定された場合、 DB2TCPCONNMGRS には値 16 が設定され、 値が範囲外であることを示す警告がログに記録されます。 1 から 16 の値を指定した場合、その値がそのまま使用されます。 複数の接続マネージャーが作成されれば、 複数のクライアント接続を同時に受け取る場合の接続スループットが向上するはずです。 ユーザーが SMP マシン上で実行している場合、または DB2TCPCONNMGRS レジストリー変数を変更した場合、追加の TCP/IP 接続マネージャー・プロセス (UNIX の場合) またはスレッド (Windows オペレーティング・システムの場合) がある場合があります。追加のプロセスまたはスレッドでは、 追加のストレージを必要とします。
    注: 接続マネージャーの数を 1 に設定すると、 多くのユーザーを持つ、または頻繁に接続と切断が繰り返される、 あるいはその両方が原因でシステムのリモート接続上でパフォーマンスの低下が生じます。
DB2TCP_SERVER_KEEPALIVE_TIMEOUT
  • オペレーティング・システム: AIX、HP-UX、Linux、Windows (サーバーのみ)
  • デフォルト = 60。 値: 0 - 32 767
  • DB2TCP_SERVER_KEEPALIVE_TIMEOUT レジストリー変数は、無応答の TCP/IP クライアントの接続またはアタッチがもはや活動状態でないと判断されるまでの最大時間を指定します (秒単位)。 これは、クライアント側で設定する DB2TCP_CLIENT_KEEPALIVE_TIMEOUT および keepAliveTimeout に相当するサーバー側の変数です。 この変数が設定されていない場合は、デフォルトの設定である 60 秒が使用されます。

    この変数を変更すると、それはその後のサーバーへのすべての TCP/IP 接続とアタッチに対してただちに有効になります。 サーバー・インスタンスを再始動する必要はありません。