IBM Support

[Db2] EXECUTE もしくは CONTEXT の監査を有効にすると SQL のパフォーマンスに影響することがある

Troubleshooting


Problem

EXECUTE カテゴリーの監査を有効にしているデータベースで、IMPORT コマンドなどで大量の SQL を実行すると以前のフィックスパックより時間がかかります。 監査を無効にしたり、フィックスパックを戻すとパフォーマンスの問題は解消します。 これはなぜでしょう?

Cause

CVE-2014-0919 の修正で追加された処理により、EXECUTE と CONTEXT の監査は以前のフィックスパックより若干時間を要します。

Environment

DB2 V9.7 FP11 以降、V10.1 FP5 以降、V10.5 FP6 以降、V11.1 で EXECUTE もしくは CONTEXT カテゴリーの監査を有効にしているデータベース

Diagnosing The Problem

監査対象の SQL を実行している接続で db2trc を採取すると、この修正で追加された処理によって遅延が発生しているかどうかを確認できます。

  1. データベースに接続してアプリケーション ID を確認します。
    $ db2 connect to <database_name>
    $ db2 values application_id
    1
    -----------------------
    *LOCAL.db2inst1.171122093528
     1 record(s) selected.
  2. 現行のアプリケーション ID のトレースを開始します。
    $ db2trc on -f trc.dmp -t -appid *LOCAL.db2inst1.171122093528
  3. 監査対象のSQL を実行します。(以下の例は大量の INSERT ステートメント発行します。)
    $ db2 import from data.del of del insert into t1
  4. SQL 終了後にトレースを停止し、パフォーマンス・レポート形式でフォーマットします。
    $ db2trc off
    $ db2trc perfrep trc.dmp trc.perf -sort timeelapsed


たとえば、CONTEXT の監査が有効な場合、関数 3.57.59.0 で時間を要していることが確認できます。
以下の例では、SQL を 10万回実行するとき、合計で 2.56 秒の遅延があることを示します。

V10.5 FP6
  nCalls   TotalElapsed  FunctionName
  100042    4.967376908  sqlr_audit_context
  100018    2.561930037  3.57.59.0
  100042    2.177487322  sqlr_audi
  100042    1.977058568  sqlexAuditData::logEvent

同じ処理を以前のフィックスパックで実行すると、関数 3.57.59.0 はありません。

V10.5 FP5
  nCalls   TotalElapsed  FunctionName
  100042    2.337424966  sqlr_audit_context
  100042    2.217967876  sqlr_audit
  100042    1.992251132  sqlexAuditData::logEvent

Resolving The Problem

EXECUTE と CONTEXT に追加された処理は期待されるものです。遅延が許容されない場合、バッチ処理中のみ監査を停止するなどの運用を検討してください。

上の例のケースでは、IMPORT コマンドの代わりに LOAD コマンドを利用して遅延をバイパスできます。
IMPORT コマンドは大量の INSERT ステートメントに変換されますが、LOAD コマンドは SQL を利用せずにデータを挿入します。


関連情報
[Db2] パスポート・アドバンテージによく寄せられる質問
Security Bulletin: IBM® DB2® contains a sensitive information exposure vulnerability in the monitoring and audit feature (CVE-2014-0919)
[Db2] 現在の監査設定を確認する方法
[Db2] Db2 9.5 以降における監査の設定方法 (IM-10-0AF)

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PkqAAE","label":"Performance"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]

Document Information

Modified date:
26 August 2023

UID

swg22010887