17.18.1 取得するメソッド,及び取得するための設定
(1) Exceptionトレースログの取得対象メソッド
Exceptionトレースログの取得対象は,Java 2 Platform, Standard Edition, version 1.4のAPI仕様にあるパッケージjava.sqlに記述されているメソッドの呼び出しと戻りです。
クライアント環境定義PDJDBTRACELEVEL,又はシステムプロパティHiRDB_for_Java_TraceLevelで指定した値が,次の表に示すメソッドのトレース取得レベル以上の場合に,そのメソッドを取得対象とします。
なお,ResultSet.getXXXメソッド,PreparedStatement.setXXXメソッド,Connection.isClosedメソッドなど,オブジェクト内の情報を参照して返すだけのメソッドや,オブジェクト内に情報を格納するだけのメソッドは取得対象になりません。
Exceptionトレースログの取得対象であるメソッドと,そのメソッドのトレース取得レベルを次の表に示します。
クラス |
メソッド |
トレース取得レベル※1 |
付加情報 |
|
---|---|---|---|---|
JDBC2.0 |
JDBC4.0 |
|||
Driver |
Connection connect(String url, Properties info) |
1 |
1 |
− |
Connection |
Statement createStatement()※2 |
1 |
1 |
− |
Statement createStatement(int resultSetType, int resultSetConcurrency)※3 |
1 |
1 |
− |
|
Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)※4 |
1 |
1 |
− |
|
PreparedStatement prepareStatement(String sql)※2 |
1 |
1 |
− |
|
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)※3 |
1 |
1 |
− |
|
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)※4 |
1 |
1 |
− |
|
CallableStatement prepareCall(String sql)※2 |
1 |
1 |
− |
|
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)※3 |
1 |
1 |
− |
|
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)※4 |
1 |
1 |
− |
|
void setAutoCommit(boolean autoCommit) |
2 |
2 |
− |
|
void commit() |
2 |
1 |
− |
|
void rollback() |
2 |
1 |
− |
|
void close() |
1 |
1 |
− |
|
boolean isValid(int timeout) |
2 |
1 |
− |
|
DatabaseMetaData getMetaData() |
2 |
2 |
− |
|
void setHoldability(int holdability) |
− |
1 |
− |
|
Statement |
ResultSet executeQuery(String sql) |
1 |
1 |
− |
int executeUpdate(String sql) |
1 |
1 |
− |
|
boolean execute(String sql) |
1 |
1 |
− |
|
void addBatch(String sql) |
− |
1 |
− |
|
int[] executeBatch() |
2 |
1 |
− |
|
void clearBatch() |
− |
2 |
− |
|
void close() |
1 |
1 |
− |
|
boolean isClosed() |
2 |
2 |
− |
|
void cancel() |
2 |
1 |
− |
|
ResultSet getResultSet() |
2 |
2 |
− |
|
boolean getMoreResults() |
− |
1 |
− |
|
void setMaxFieldSize(int max) |
− |
2 |
− |
|
void setMaxRows(int max) |
− |
2 |
− |
|
void setQueryTimeout(int seconds) |
− |
1 |
− |
|
void setFetchSize(int rows) |
− |
1 |
− |
|
boolean isPoolable() |
2 |
2 |
− |
|
PreparedStatement |
ResultSet executeQuery()※2 |
2 |
1 |
[SQL] |
int executeUpdate()※2 |
2 |
1 |
[SQL] |
|
boolean execute()※2 |
2 |
1 |
[SQL] |
|
ResultSetMetaData getMetaData() |
2 |
2 |
− |
|
void setBlob(int parameterIndex, Blob x)※6 |
− |
2 |
− |
|
CallableStatement |
String getString(int parameterIndex)※6 |
− |
2 |
− |
long getLong(int parameterIndex)※6 |
− |
2 |
− |
|
byte[] getBytes(int parameterIndex)※6 |
− |
2 |
− |
|
Object getObject(int parameterIndex)※6 |
− |
2 |
− |
|
Blob getBlob(int parameterIndex)※6 |
− |
2 |
− |
|
String getString(String parameterName)※6 |
− |
2 |
− |
|
long getLong(String parameterName)※6 |
− |
2 |
− |
|
byte[] getBytes(String parameterName)※6 |
− |
2 |
− |
|
Object getObject(String parameterName)※6 |
− |
2 |
− |
|
Blob getBlob(String parameterName)※6 |
− |
2 |
− |
|
ResultSet |
boolean next()※5 |
2 |
1 |
[COUNT] |
boolean previous() |
− |
2 |
− |
|
boolean absolute(int row) |
2 |
1 |
− |
|
boolean relative(int rows) |
2 |
1 |
− |
|
void beforeFirst() |
2 |
1 |
− |
|
boolean first() |
2 |
1 |
− |
|
boolean last() |
2 |
1 |
− |
|
void afterLast() |
2 |
1 |
− |
|
boolean isBeforeFirst() |
2 |
1 |
− |
|
boolean isAfterLast() |
2 |
1 |
− |
|
boolean isLast() |
2 |
1 |
− |
|
void close()※5 |
2 |
1 |
[COUNT] |
|
boolean isClosed() |
2 |
2 |
− |
|
Statement getStatement() |
2 |
2 |
− |
|
ResultSetMetaData getMetaData() |
2 |
2 |
− |
|
int getHoldability() |
2 |
2 |
− |
|
String getString(int columnIndex)※6 |
− |
2 |
− |
|
long getLong(int columnIndex)※6 |
− |
2 |
− |
|
byte[] getBytes(int columnIndex)※6 |
− |
2 |
− |
|
Blob getBlob(int columnIndex)※6 |
− |
2 |
− |
|
Object getObject(int columnIndex)※6 |
− |
2 |
− |
|
InputStream getAsciiStream(int columnIndex)※6 |
− |
2 |
− |
|
Reader getCharacterStream(int columnIndex)※6 |
− |
2 |
− |
|
InputStream getBinaryStream(int columnIndex)※6 |
− |
2 |
− |
|
String getString(String columnLabel)※6 |
− |
2 |
− |
|
long getLong(String columnLabel)※6 |
− |
2 |
− |
|
Blob getBlob(String columnLabel)※6 |
− |
2 |
− |
|
Object getObject(String columnLabel)※6 |
− |
2 |
− |
|
InputStream getAsciiStream(String columnLabel)※6 |
− |
2 |
− |
|
Reader getCharacterStream(String columnLabel)※6 |
− |
2 |
− |
|
InputStream getBinaryStream(String columnLabel)※6 |
− |
2 |
− |
|
Blob |
long length()※6 |
2 |
2 |
− |
byte[] getBytes(long pos, int length)※6 |
2 |
2 |
− |
|
long position(byte[] pattern, long start)※6 |
2 |
2 |
− |
|
long position(Blob pattern, long start)※6 |
2 |
2 |
− |
|
void free()※6 |
1 |
1 |
− |
|
DatabaseMetaData |
ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) |
2 |
2 |
− |
ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) |
2 |
2 |
− |
|
ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) |
2 |
2 |
− |
|
ResultSet getSchemas() |
2 |
2 |
− |
|
ResultSet getCatalogs() |
2 |
2 |
− |
|
ResultSet getTableTypes() |
2 |
2 |
− |
|
ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) |
2 |
2 |
− |
|
ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) |
2 |
2 |
− |
|
ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) |
2 |
2 |
− |
|
ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) |
2 |
2 |
− |
|
ResultSet getVersionColumns(String catalog, String schema, String table) |
2 |
2 |
− |
|
ResultSet getPrimaryKeys(String catalog, String schema, String table) |
2 |
2 |
− |
|
ResultSet getImportedKeys(String catalog, String schema, String table) |
2 |
2 |
− |
|
ResultSet getExportedKeys(String catalog, String schema, String table) |
2 |
2 |
− |
|
ResultSet getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) |
2 |
2 |
− |
|
ResultSet getTypeInfo() |
2 |
2 |
− |
|
ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) |
2 |
2 |
− |
|
ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) |
2 |
2 |
− |
|
Connection getConnection() |
2 |
2 |
− |
|
ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) |
2 |
2 |
− |
|
ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) |
2 |
2 |
− |
|
ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) |
2 |
2 |
− |
|
RowIdLifetime getRowIdLifetime() |
2 |
2 |
− |
|
ResultSet getSchemas(String catalog, String schemaPattern) |
2 |
2 |
− |
|
boolean supportsStoredFunctionsUsingCallSyntax() |
2 |
2 |
− |
|
boolean autoCommitFailureClosesAllResultSets() |
2 |
2 |
− |
|
ResultSet getClientInfoProperties() |
2 |
2 |
− |
|
ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) |
2 |
2 |
− |
|
ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) |
2 |
2 |
− |
|
DataSource |
Connection getConnection()※2 |
1 |
1 |
− |
Connection getConnection(String username, String password)※3 |
1 |
1 |
− |
|
ConnectionPool DataSource |
PooledConnection getPooledConnection()※2 |
1 |
1 |
− |
PooledConnection getPooledConnection(String user, String password)※3 |
1 |
1 |
− |
|
XADataSource |
XAConnection getXAConnection()※2 |
1 |
1 |
− |
XAConnection getXAConnection(String user,String password)※3 |
1 |
1 |
− |
|
PooledConnection |
Connection getConnection() |
1 |
1 |
− |
void close() |
1 |
1 |
− |
|
void addConnectionEventListener(ConnectionEventListener listener) |
− |
2 |
− |
|
void removeConnectionEventListener(ConnectionEventListener listener) |
− |
2 |
− |
|
void addStatementEventListener(StatementEventListener listener) |
− |
2 |
− |
|
void removeStatementEventListener(StatementEventListener listener) |
− |
2 |
− |
|
XAConnection |
XAResource getXAResource() |
1 |
1 |
− |
XAResource |
void start(Xid xid, int flags) |
3 |
3 |
− |
void end(Xid xid, int flags) |
3 |
3 |
− |
|
int prepare(Xid xid) |
3 |
3 |
− |
|
void commit(Xid xid, boolean onePhase) |
3 |
3 |
− |
|
void rollback(Xid xid) |
3 |
3 |
− |
|
void forget(Xid xid) |
3 |
3 |
− |
|
Xid[] recover(int flag) |
3 |
3 |
− |
|
boolean isSameRM(XAResource xares) |
3 |
3 |
− |
|
InputStream |
int read()※2 |
2 |
2 |
− |
int read(byte[] data)※3 |
2 |
2 |
− |
|
int read(byte[] b, int off, int len)※4 |
2 |
2 |
− |
|
PrdbConnection |
int checkSession (int waittime) |
− |
1 |
− |
(凡例) −:出力しません。
- 注※1
-
トレース取得レベルが5の場合,内部呼び出しも含めてExceptionトレースログを取得します。
- 注※2
-
メソッド名として,「メソッド名(1)」と出力されます。
- 注※3
-
メソッド名として,「メソッド名(2)」と出力されます。
- 注※4
-
メソッド名として,「メソッド名(3)」と出力されます。
- 注※5
-
トレース取得レベルが1の場合,カーソルクローズ時だけ[COUNT]付加情報(next実行回数)付きでメソッド正常終了の履歴を出力します。トレース取得レベルが2以上の場合,メソッド呼び出しごとにメソッド開始・正常終了の履歴を出力し,[COUNT]付加情報は付けません。
- 注※6
-
対象がBLOB又はBINARY型で,位置付け子を使用している場合だけ,Exceptionトレースログを取得します。
(2) Exceptionトレースログを取得するための設定
Exceptionトレースログのファイル出力先,ファイルへの出力数,メモリ内取得情報数,及びトレース取得レベルは,システムプロパティ又はクライアント環境定義で設定します。優先順位は次のとおりです。
-
システムプロパティ
-
クライアント環境定義
(a) クライアント環境定義の設定
クライアント環境定義では,次の項目を指定します。
-
PDJDBFILEDIR
-
PDJDBFILEOUTNUM
-
PDJDBONMEMNUM
-
PDJDBTRACELEVEL
-
PDJDBFILESIZE
これらはJavaVMプロセスごとでの設定となるため,同一JavaVMプロセス上で接続ごとに異なる値を指定することはできません。指定した場合,最初の接続に対する指定が有効となります。
指定値の詳細は,「クライアント環境定義の設定内容」を参照してください。
なお,これらのクライアント環境定義に不正な値が指定されて,SQLExceptionを投入する際に取得するExceptionトレースログでは,これらのクライアント環境定義に値が指定されなかったものとみなされます。その場合は,次の表に示すデフォルトが仮定されます。
(b) システムプロパティの設定
システムプロパティでは,次の表に示す項目を指定します。
項目 |
システムプロパティ |
内容 |
デフォルト※ |
---|---|---|---|
ファイル出力先 |
HiRDB_for_Java_FileDIR |
Exceptionトレースログを出力するディレクトリを,絶対パスで指定します。Exceptionトレースログは,指定したディレクトリの直下に出力されます。 指定されたファイル出力先が存在しない,又は書き込み権限がない場合は,カレントディレクトリに出力します。 |
カレントディレクトリ |
ファイルへの出力数 |
HiRDB_for_Java_FileOutNUM |
1ファイルへ出力する情報数の上限を指定します。指定できる範囲は1〜50です。 実際に1ファイルへ出力する情報数の上限は,「ファイルへの出力数」×「メモリ内取得情報数」個となります。 ファイルへの出力数は,「出力形式」に示す形式2〜形式4をそれぞれ1個と数えます。 なお,ファイルには,メモリに蓄積した順番に出力されます。 また,上限値を超えてファイルに出力する場合は,2ファイルでラップアラウンドします。ファイル名は次のとおりです。
ただし,「出力形式」に示す形式1と形式2の間で出力先のファイルが切り替わることはありません。 HiRDB_for_Java_FileSizeプロパティが指定されている場合,HiRDB_for_Java_FileSizeプロパティの指定を優先し,この指定は無視します。 |
5 |
メモリ内取得情報数 |
HiRDB_for_Java_OnMemNUM |
メモリ内で蓄積する情報数の上限を指定します。指定できる範囲は500〜10,000です。 なお,メモリ内取得情報は,表「Exceptionトレースログの取得対象であるメソッドとトレース取得レベル」で示したメソッド一つを1個と数えます。 また,上限値を超えて情報を蓄積しようとすると,古い情報から順に,新しい情報に上書きされます。 |
1,000 |
トレース取得レベル |
HiRDB_for_Java_TraceLevel |
トレース取得レベルを指定します。指定できる範囲は0〜5です。 5を指定すると,内部呼び出しを含めたすべてのトレース取得対象メソッドを取得します。 0を指定すると,Exceptionトレースログを取得しません。 |
1 |
最大ファイルサイズ |
HiRDB_for_Java_FileSize |
ファイルの最大サイズをバイト単位で指定します。指定できる範囲は4,096〜2,000,000,000です。 指定サイズを超えると出力先を切り替えます。 このプロパティを指定していない場合,HiRDB_for_Java_FileOutNUMプロパティによって出力先を切り替えます。 |
なし |
- 注※
-
次のような場合に取得するExceptionトレースログでは,システムプロパティに値が指定されなかったものとみなされます。その場合はデフォルトが仮定されます。
-
システムプロパティに不正な値が指定され,データベース接続時にSQLExceptionを投入した場合
-
Java仮想マシンが,セキュリティマネジャによってJDBCドライバに対するシステムプロパティの受け渡しを拒否した場合
-
Java仮想マシンの,最初の接続が確立する前
-