db2trc を使用した Db2 トレースの取得

db2trc コマンドは、 Db2 で提供されるトレース機能を制御します。 このトレース機能は、操作に関する情報を記録し、その情報を読み取り可能な形式にフォーマットします。

なお、トレースの実行中は追加のプロセッサー使用量が発生するという点に注意してください。このため、トレース機能を使用可能にすると、システムのパフォーマンスに影響が及ぶ可能性があります。

注: Windows オペレーティング・システムでは、 db2trc コマンドは、同じインストール済みコピーに属するすべての Db2 インスタンスをトレースします。 Linux® および UNIX オペレーティング・システムでは、 Db2 インスタンスを個別にトレースできます。

一般に、 IBM ソフトウェア・サポートおよび開発チームは、トラブルシューティングのために Db2 トレースを使用します。 調査中の問題に関するより詳しい情報を得るためにトレースを実行することはできますが、 Db2 のソース・コードに関する知識がなければ、その用途はごく限られたものになります。

しかし、それらを取得するよう要求される場合に備えて、トレースをオンにしたりトレース・ファイルをダンプしたりするための正しい方法を理解しておくことは大切です。

注: db2trc を使用するには、SYSADM、SYSCTRL、または SYSMAINT 権限のいずれかが必要です。
使用可能なオプションの概要を確認するには、パラメーターを指定せずに db2trc コマンドを実行します。
C:\>db2trc 
Usage: db2trc (chg|clr|dmp|flw|fmt|inf|off|on) options
特定の db2trc コマンド・パラメーターについて詳しくは、以下を使用してください。-uオプション。 例えば、トレースをオンにする方法の詳細を調べるには、次のコマンドを実行します。
db2trc on -u
これにより、Db2 トレースをオンにする際に指定可能なすべての追加オプション ("facilities" というラベルが付いている) に関する情報が提供されます。

トレースをオンにする場合、最も重要なオプションは以下のとおりです。-Lトレースされる情報を保管するために使用されるメモリー・バッファーのサイズを指定します。 バッファーのサイズはバイト単位またはメガバイト単位で指定できます。 (メガバイトの追加を指定するには、"M「 または "m「 値の後)。 トレース・バッファーのサイズはメガバイト単位で 2 のべき乗にする必要があります。 この要件を満たしていないサイズを指定すると、バッファーのサイズは自動的にメガバイト単位で 2 のべき乗となるうち最も近接した容量に端数切り捨てされます。

バッファーが小さすぎると、情報が失われる可能性があります。 デフォルトでは、バッファーが満杯になると最も新しいトレース情報のみが保持されます。 バッファーが大きすぎると、ファイルを IBM ソフトウェア・サポート・チームに送信するのが困難になる可能性があります。

比較的短い操作 (データベース接続など) をトレースする場合は、通常約 8 MB 程度で十分です。
C:\> db2trc on -l 8M 
Trace is turned on

しかし、より大きな操作をトレースする場合や、多数の処理が同時に進行するような場合は、より大きなトレース・バッファーが必要になります。

トレースは、ほとんどのプラットフォームでいつでもオンにでき、その動作も前述のとおりです。 ただし、以下のような注意すべき状況もあります。
  1. 複数データベース・パーティション・システムでは、それぞれの物理データベース・パーティション (論理データベース・パーティションではない) に対して、トレースを実行する必要があります。
  2. HP-UX、 Linux 、および Solaris プラットフォームでは、インスタンスの開始後にトレースをオフにすると、指定されたサイズに関係なく、次にトレースを開始するときに非常に小さなバッファーが使用されます。 例えば、昨日、 db2trc on -l 8mを使用してトレースをオンにし、トレースを収集してから、トレースをオフにしました (db2trc off)。 現在は、インスタンスを停止して再始動することなく、メモリー・バッファーを 32 メガバイト (db2trc on -l 32m) に設定してトレースを実行する必要があります。 この場合、トレースはごく小さなバッファーを使用します。 これらのプラットフォーム上でトレースを効果的に実行するには、必要なサイズのバッファーを使用してインスタンスを開始する前に、トレースをオンにしてから、必要に応じてバッファーをクリアします。

収集されるデータやフォーマットされるデータの量を少なくするために、db2trc コマンドは複数のマスク・オプションをサポートしています。 収集されるデータの量を減らすと、トレースの収集が継続しているために発生する追加のプロセッサー使用量を減らすことができますし、収集されるデータの選択範囲を狭めることができるため、有効です。 収集されるデータの選択範囲を狭めると、問題診断の時間短縮にも役立ちます。

通常は、 IBM サポートの指示の下で -m マスク・オプションを使用します。 しかし、-p マスク・オプションを使用して、特定のプロセス ID (およびオプションでスレッド ID) のトレースのみ収集することもできます。 例えば、プロセス 77 とスレッド 1、2、3、および 4 のトレースと、プロセス 88 とスレッド 5、6、7、および 8 のトレースを使用可能にするには、以下の構文を使用します。

db2trc on -p 77.1.2.3.4,88.5.6.7.8

Mac での db2trc の設定とキャプチャー

ほとんどの Mac システムでは、カーネル最大共有メモリーはデフォルトで 4 MB に設定されています。 このようなシステムでは、db2trc をオンにすることはできません。 db2trc をオンにするためには、共有メモリーを少なくとも 64 MB に設定する必要があります。

カーネル共有メモリーの現在の設定を確認するには、次のコマンドを使用します。
sysctl -A | grep shm
カーネル共有メモリーを変更するには、スーパーユーザー特権を使用する sysctl.conf/etc ディレクトリーに作成します。
sudo vi /etc/sysctl.conf
64 MB をサポートするための最大共有メモリー設定を指定するサンプル sysctl.conf ファイルは、次のようになります。
kern.sysv.shmmax: 67108864
kern.sysv.shmmin: 1
kern.sysv.shmmni: 512
kern.sysv.shmseg: 128
kern.sysv.shmall: 16384
machdep.pmap.hashmax: 14
security.mac.posixshm_enforce: 1
security.mac.sysvshm_enforce: 1
変更が完了したら、変更を有効にするためにシステムを再始動します。

trcon スクリプトと troff スクリプトを使用してトレースの収集を制御する

2 つのスクリプトを使用して、手動で発行する複数のコマンドを単一のスクリプト呼び出しに置き換えることにより、トレースの収集を単純化できます。

db2trcon スクリプトは、トレースをオンにし、複数のオプションをサポートします。 このスクリプトを使用して、指定された期間だけ db2trc をオンにし、エンジン・ディスパッチ可能単位 (EDU) を消費する上位のプロセッサー時間のみトレースを収集するよう指定し、自動的にダンプ・ファイル、フロー・ファイル、およびフォーマット・ファイルを生成することができます。 例えば、EDU を消費する上位 5 つのプロセッサー時間のトレースを 45 秒間オンにし、スクリプトの実行を開始した時刻から 15 秒間隔でサンプルを取るには、以下のコマンドを発行します。

db2trcon
-duration 45 -top 5 -interval 15 -flw -fmt

指定された期間の経過後に db2trc がオフになると、db2trcon は自動的にダンプ・ファイル、フロー・ファイル、およびフォーマット・ファイルを生成します。

db2trcoff は単一のコマンドを使用して、トレースをオフにし、自動的にダンプ・ファイル、フロー・ファイル、およびフォーマット・ファイルを生成できます。 例えば、-force を指定して db2trc をオフにし、フロー・ファイル、フォーマット・ファイル、およびダンプ・ファイルを生成するには、以下のコマンドを発行します。

db2trcoff -flw
-fmt -force

db2trcon スクリプトを使用してトレースをオンにし、期間を指定した場合は、改めて db2troff コマンドを発行する必要がないことに注意してください。