如何利用JDBC啟動Oracle 自動追蹤(auto trace),jdbcoracle
有時我們需要對執行SQL的具體執行過程做一個追蹤分析,特別是在應用程式效能最佳化的時候。Oracle兩個工具可以協助我們做好效能分析,一個是SQL_TRACE,一個是SESSION_EVENT。SQL_TRACE跟蹤SQL執行過程,如解析時間、執行時間、查詢時間等;SESSION_EVENT跟蹤執行過程的等待事件,如等待用戶端回應時間,等待本地磁碟IO事件等等。 開啟Oracle自動追蹤必須使用DBA許可權。 使用JDBC開啟SQL_TRACE的方法: conn.prepareStatement("alter SESSION SET SQL_TRACE=TRUE"); ps.execute(); 使用JDBC開啟SESSION_EVENT的方法: 開啟:ps=conn.prepareStatement( "ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'"); ps.execute(); 關閉:ps=conn.prepareStatement( "ALTER SESSION SET EVENTS '10046 trace name context off'");(在關閉串連前執行關閉追蹤) ps.execute();
下面是開啟這兩個追蹤得到的trace檔案:
Oracle執行過程分析:
- 在對執行sql的過程中,主要執行過程耗費在了Oracle的Fetch階段
- Fetch的OCI調用次數為146次 ,耗費時間為50.49秒,查詢條數為145259條
Oracle執行過程中的等待事件分析:
- oracle伺服器向用戶端發送時等待時間為0,說明伺服器端網路傳輸等沒有問題
- oracle伺服器等待用戶端響應總時間為5.92秒,說明用戶端處理資料及網路傳輸等需要耗費一定時間
- oracle伺服器磁碟IO時間為48.37秒,說明主要時間耗在Oracle從磁碟中讀取資料區塊上
- 把資料分批次發送給用戶端的時間耗費0.12秒,這個時間也是可以接受的
jdbc編程oracle驅動問題
oracle驅動包的問題,換一個。 或者我給你發一個。把你的郵箱發給我。給我發百度訊息 。
包引用沒問題,放在lib/ext下會自動添加到ClassPath路徑
參考資料:還有其他問題的話,給我發百度訊息
Java做資料庫連接池的時載入oracle的JDBC驅動時總是提示找不到驅動類
我聽說過這個問題,我在網上的視頻裡見過,我記得不太清楚了(好像是BUG吧),反正就是你的自己複製過去,它不會給你自動弄過去,你用Myeclipse就沒事了。。