Database JUNKY

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

DB2 CLIトレースを使って原因究明

過去に、プログラムからDB2のエラーメッセージを取得できないことがありました。

SQL1585N 十分なページ・サイズを持つ SYSTEM TEMPORARY 表スペースが存在しません。

上のエラーは、一時表スペースの作り忘れです(バカ丸出し)。プログラムからはこのエラーが出なかったんですよね。なぜか。 その時は、CLIトレースという方法で、エラーを解析しました。

プログラムの置いてあるサーバにログインして

vi /home/db2inst1/sqllib/cfg/db2cli.ini

以下行を追加します。

[COMMON] TRACE=1 TRACEPATHNAME=/tmp/trace TRACEFLUSH=1 TRACETIMESTAMP= 1

これで、プログラムを実行すると、/tmp/trace ディレクトリにトレース結果が作られます。

ls -l

-rw-r–r– 1 db2inst1 db2inst1 12933 5月 19 13:03 p16584t1084691168.cli -rw-r–r– 1 db2inst1 db2inst1 14209 5月 19 13:05 p16585t1084691168.cli

ファイルの中をのぞいて、エラーを探してください。 ちなみにCLIトレースは、書き込みの負荷でプログラムのパフォーマンスが低下するので、本番では利用しないでください。