用p6spy來(lái)觀察Java程序中執(zhí)行的所有SQL語(yǔ)句

字號(hào):

本想把 p6spy 結(jié)合 SQL Profiler 或 IronTrack SQL 的使用介紹掇湊于一塊來(lái)寫。簡(jiǎn)單點(diǎn)說(shuō),只是一貼上圖樣,篇幅便需拖拉難遂人愿,也好,索性把它們分成兩個(gè)篇章。一來(lái)每篇主旨鮮明,二來(lái)五篇成一系列比起四更來(lái)的自然且吉利。
    前面講過(guò) p6spy 本身就可利用 Log4j 的 SocketAppender 向遠(yuǎn)端發(fā)送日志,SQL Profiler 不過(guò)是在這個(gè)基礎(chǔ)上作了進(jìn)一步拓展。而接下來(lái)要說(shuō)的 IronTrack SQL 就略有不同了,看它帶的 p6spy.properties 文件,里面有 IronTrack SQL 給 p6spy 定制的一個(gè)模塊:module.ibeam=com.irongrid.ibeam.server.IBeamFactory。它用到了 log4j-1.2.8.jar,不過(guò)還得研究下 Log4j 在其中所起的作來(lái)?,F(xiàn)在就來(lái)介紹 p6spy 結(jié)合 IrconTrack SQL 的使用,是你知道如何單獨(dú)使用 p6spy。壓縮包里有文檔:是 IronTrackSQLdocsindex.html。
    p6spy + IronTrack SQL 觀察 SQL 語(yǔ)句
    下載 IronTrack SQL:http://www.dlog.cnhttp://pic02.newdu.com/uploads/files/IronTrackSQL.zip,網(wǎng)上很多文章說(shuō)從 http://www.irongrid.com/ironeyesql 下載,而實(shí)際上這個(gè)域名不存在了。若是第一個(gè)地址無(wú)法下載。好再看使用步驟,解開 IronTrackSQL.zip,可以看到在第一級(jí)目錄中有必須的 p6spy.ar、log4j-1.2.8.jar、irontracksql.jar、spy.properties、irongrid.properies 文件。
    1. 把壓縮包中的 irontracksql.jar 拷到 p6spy.jar 所在的目錄中,比如 Tomcat 5.x 的 common/lib 目錄中
    2. 壓縮包中還有個(gè) p6spy.properties 文件,我們就在這個(gè)文件基礎(chǔ)上少作改動(dòng),把它放在加載 p6spy.jar 的加載器能見的位置上,如 Tomcat 5.x 的 common/classes 目錄中。
    注意:如果你在 Tomcat 中,p6spy.jar 和 sqlprofiler.jar 是由 commons 加載器加載的,那么要用到的 log4j-1.2.8.jar 也必須放在與他們同一目錄中由 cmmons 類加載器來(lái)加載,如果仍然在應(yīng)用的 WEB-INF/lib目錄中的話,log4j 的類對(duì)于 p6spy 和 sqlprofiler 來(lái)說(shuō)不可見。如果你對(duì)于類加載器不熟的話,還是別把事情搞太復(fù)雜了,把那些 jar 文件全部放到應(yīng)用的 WEB-INF/lib 中吧,但是配置連接池的時(shí)候又可能碰到新問(wèn)題。
    3. 修改 p6spy.properties 文件,只啟用你所用的 realdriver,如對(duì)于 oracle 是 realdrive=oraclejdbc.driver.OacleDriver。
    看到其中對(duì)模塊 ibeam 的配置 monitorport=2000,我們就使用這個(gè)監(jiān)聽端口吧。
    4. 命令行下進(jìn)到 IronTrackSQL 的解壓目錄,執(zhí)行 java -jar irontracksql.jar 來(lái)啟動(dòng)IronTrack SQL,監(jiān)聽 p6spy 的 SQL 語(yǔ)句輸出
    5. 啟動(dòng)應(yīng)用,進(jìn)行業(yè)務(wù)操作,就能在 IronTrack SQL 界面上直觀的看到你需要的東西了。
    不多說(shuō)了,看看界面吧,這個(gè) IronTrackSQL 看起來(lái)比 SQL Profiler 要專業(yè)些。
    可設(shè)定監(jiān)聽端口,導(dǎo)出導(dǎo)入歷史數(shù)據(jù)。
    irongrid.properties 文件中保存了 Iron TrackSQL 運(yùn)行時(shí)的配置數(shù)據(jù)。與 SQL Profiler 相比,它有以下幾個(gè)特點(diǎn):
    1. 界面標(biāo)志些,使用了 JFreeChart 來(lái)展示圖表
    2. 既能實(shí)時(shí)監(jiān)聽,又能保存歷史數(shù)據(jù)來(lái)對(duì)比分析
    3. 并不要求先啟動(dòng) Iron TrackSQL,相比于 SQL Profiler 的被動(dòng)監(jiān)聽,它采取的是主動(dòng)去查詢。更適于遠(yuǎn)程監(jiān)控,想在何時(shí)監(jiān)控就啟動(dòng),完事就關(guān)閉,不至于像 SQL Profiler 那樣一旦監(jiān)聽窗口壞了一下,就得重啟應(yīng)用。而且我想它對(duì)應(yīng)用程序的性能影響也較小些的。