JDBC トレースをとるには

提供: DB2逆引きWiki
移動: 案内, 検索

DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#運用監視編】 【DB2逆引きリファレンス目次#トレース情報

目次

前提

  • データベース接続が必要

解説

ユニバーサルJDBCドライバーを利用する場合にJDBCトレースを取得するには、接続の作成時に以下のプロパティを設定します。

traceFile
トレースを記録するためのファイルのパスを指定します。
traceLevel
トレースレベルを整数値で指定します。指定できる値の一覧は表5-3-1に示すとおりです。

トレースレベル取得される情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_NONEトレースは取得しない
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTION_CALLS接続に対する呼び出し情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_STATEMENT_CALLSステートメントに対する呼び出し情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_CALLS結果セットに対する呼び出し情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRIVER_CONFIGURATIONドライバー設定に関する情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_CONNECTS接続の情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWSクライアントとサーバーの接続に用いられるDRDAプロトコルの制御情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_RESULT_SET_META_DATA結果セットのメタデータ情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_PARAMETER_META_DATAパラメータのメタ情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DIAGNOSTICS各種診断情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_SQLJSQLJに関するトレース情報
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_XA_CALLSXA制御に関するトレース情報(Type2の接続を利用している場合のみ取得可能)
com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALLすべての情報

表5-3-1: トレースレベル一覧

TRACE_NONEおよびTRACE_ALLを除き、これらの整数値は複数指定することが可能です。 その場合は、指定するすべての整数値の論理和を指定してください。

使用例

接続、ステートメントおよび結果セットに対する呼び出しをトレースログ(ここでは/tmp/trace.log)に出力するように設定する例。

import java.sql.*;
import java.io.*;
import java.util.*;
import com.ibm.db2.jcc.*;

public class TraceSample {

    private final static String PATH = "/tmp/trace.log";

    public static void main(String[] args) {

        try {
            Class.forName("com.ibm.db2.jcc.DB2Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return;
        }

        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet result = null;
        PrintWriter out = null;

        try {

            Properties props = new Properties();
			
            props.setProperty("user", "user");
            props.setProperty("password", "password");
            props.setProperty("traceFile", PATH);
            props.setProperty("traceLevel", 
              String.valueOf(
                DB2BaseDataSource.TRACE_CONNECTION_CALLS |
                DB2BaseDataSource.TRACE_STATEMENT_CALLS |
                DB2BaseDataSource.TRACE_RESULT_SET_CALLS
              )
            );

            conn =
                DriverManager.getConnection(
                    "jdbc:db2://localhost:50000/sample",
                    props);

            ps = conn.prepareStatement("SELECT * FROM employee");
            result = ps.executeQuery();

            while (result.next()) {
                System.out.print(result.getInt("EMPNO"));
                System.out.print(" ");
                System.out.println(result.getString("FIRSTNME"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (result != null) {
                try {
                    result.close();
                } catch (SQLException e) {
                }
            }
            if (ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                }
            }
            if (out != null) {
                out.close();
            }
        }
    }
}


注意

  • JDBCトレースはクライアント側で取得するものです。
  • JDBCトレースはパフォーマンスに大きな影響を与えるため、障害発生時の問題判別など、デバッグ用途にのみ利用するようにしてください。

参照

個人用ツール
名前空間

変種
操作
案内
ツール