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 が見たかったんですよね。