Oracle の JDBC Thin Driver で Net Trace を取得する。
まず服を脱ぎます。まず "トレース用" のJDBCドライバをダウンロードします。
ojdbc*_g.jar を Oracle のサイトからダウンロードしてきます。
JDBCドライバはバージョンが幾つかありますが、差し当たり11gR2(11.2.0.4)の
"トレース用"JDBCドライバを下記サイトからダウンロードしてきます。
※2015年6月時点では下記アドレスですが、最新バージョンは都度検索して下さい。
Oracle Database 11g Release 2 JDBC Drivers
Oracle Database 11g Release 2 (11.2.0.4) JDBC Drivers
http://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html
ojdbc6_g.jar ←★コイツ★
次に JDBC の Oracle Netトレース用の Configファイルを作成します。
マニュアル(JDBC開発者ガイド) と WhitePaper を参考にしながら、粛々と作成しますた。
Oracle Database JDBC開発者ガイド
11gリリース2(11.2)
B56281-01
31 JDBCの診断機能
ロギングの構成
http://docs.oracle.com/cd/E16338_01/java.112/b56281/diagnose.htm#CIAIDFIC
An Oracle White Paper
September 2009
Oracle JDBC Logging using java.util.logging
http://www.oracle.com/technetwork/topics/11-2.pdf
> In order to generate network level trace information
> add the following line to your config file:
> oracle.net.ns.level = FINEST
下記は JDBC の Oracle Netトレース用の Configファイル のサンプルとなります。
基本は上記ドキュメント群のコピペなんですが、少し改変してます。
#java_net_trace.cfg .level=OFF #.level=SEVERE #oracle.jdbc.level=SEVERE handlers=java.util.logging.FileHandler # example of a full pathname in Windows java.util.logging.FileHandler.pattern=D:\\Networkpacket.log # Predefined levels are: ALL, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, # FINEST, OFF java.util.logging.FileHandler.limit = 500000000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.level =ALL java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter java.util.logging.FileHandler.pattern = jdbc_net_trace.log # Following line enables the Network packet tracing oracle.net.ns.level = FINEST
とりあえず上記のcfgファイルやトレース用のJDBCドライバをWindowsマシンの
「D:\toos\MT\」にぶっ込んだ想定で、SQLを実行するモジュールを起動します。
DOSプロンプトからコマンドラインでjavaを直に実行します。javaコマンドのサンプルは下記の通りとなります。Configファイル や トレース用のJDBCドライバ を指定しつつ、実行します。
※javaコマンドは表記上複数行で記載していますが、実際には1行で実行して下さい。
D: cd \tools\MT\ "C:\Program Files\Java\jdk1.8.0_31\bin\java.exe" -Djava.util.logging.config.file=D:\tools\MT\java_net_trace.cfg -Doracle.jdbc.Trace=true -classpath .;D:\tools\MT\ojdbc6_g.jar MultiThreadSQL 1 3 REPO
上手く行くと、Configファイルに指定したログファイルに JDBC の Netトレースが出力されてます。
下記は実際に手元の環境で出力された JDBC の Netトレース・ログ(jdbc_net_trace.log) の 抜粋となります。
6 04, 2015 9:41:15 午後 oracle.net.ns.NSProtocol connect
詳細: 50675690 Enter: "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = dbserver1.ayu.com)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)
(SERVER=DEDICADED)))", {T4CConnection.hashCode=2D6D8735,
oracle.jdbc.v$session.osuser=oracle01, USE_ZERO_COPY_IO=true,
oracle.jdbc.v$session.program=JDBC Thin Client, FORCE_DNS_LOAD_BALANCING=false,
oracle.net.keepAlive=false, ENABLE_JAVANET_FASTPATH=false}
6 04, 2015 9:41:15 午後 oracle.net.ns.NSProtocol connect
TRACE_20: 50675690 Debug: Tracing T4CConnection.hashCode=2D6D8735
:
(中略)
:
6 04, 2015 9:41:18 午後 oracle.net.ns.DataPacket send
詳細: 7F63425A Exit [0.707761ms]
6 04, 2015 9:41:18 午後 oracle.net.ns.Packet receive
詳細: 36D64342 Enter:
6 04, 2015 9:41:18 午後 oracle.net.ns.Packet receive
TRACE_20: 36D64342 Debug: type=6, length=266, flags=0
01 0A 00 00 06 00 00 00 |........|
00 00 08 01 03 01 0C 0C |........|
41 55 54 48 5F 53 45 53 |AUTH_SES|
53 4B 45 59 01 60 60 33 |SKEY.``3|
41 37 44 42 37 36 43 32 |A7DB76C2|
33 46 36 32 33 35 44 42 |3F6235DB|
43 41 43 34 32 34 38 33 |CAC42483|
39 42 37 42 41 42 33 31 |9B7BAB31|
46 39 39 34 37 39 36 35 |F9947965|
43 32 36 43 38 45 34 35 |C26C8E45|
45 36 44 37 46 30 39 45 |E6D7F09E|
34 31 31 41 46 34 31 38 |411AF418|
46 39 31 43 30 30 45 42 |F91C00EB|
35 30 34 44 42 33 37 34 |504DB374|
31 39 31 33 44 33 35 42 |1913D35B|
31 43 33 30 46 39 30 00 |1C30F90.|
01 0D 0D 41 55 54 48 5F |...AUTH_|
56 46 52 5F 44 41 54 41 |VFR_DATA|
01 14 14 32 36 32 34 42 |...2624B|
33 43 30 34 42 30 43 30 |3C04B0C0|
30 31 30 41 41 35 41 02 |010AA5A.|
1B 25 01 1A 1A 41 55 54 |.%...AUT|
48 5F 47 4C 4F 42 41 4C |H_GLOBAL|
4C 59 5F 55 4E 49 51 55 |LY_UNIQU|
45 5F 44 42 49 44 00 01 |E_DBID..|
20 20 34 30 32 34 37 41 |..40247A|
37 39 37 34 31 38 37 38 |79741878|
46 39 42 42 43 39 39 35 |F9BBC995|
36 41 43 41 41 36 43 42 |6ACAA6CB|
43 39 00 04 01 01 01 02 |C9......|
00 00 00 00 00 00 00 00 |........|
00 00 00 00 00 00 00 00 |........|
00 00 00 01 00 00 00 00 |........|
00 00 |.. |
:
(中略)
:上手く行ったZe!!! (`・ω・)Ъ
Netトレースの、AUTH_SESSKEY が見たかったんですよね。