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トレースは、書き込みの負荷でプログラムのパフォーマンスが低下するので、本番では利用しないでください。