2013-12-20 115 views
1

我有一個以JPA and eclipse link作爲後端的Java應用程序。我希望在應用程序運行時找到執行的特定查詢的explain plan。我知道我可以通過SQL開發人員來檢查它,但是我希望在應用程序調用查詢時查找查詢的解釋計劃。有沒有辦法做到這一點?如何通過eclipse鏈接查詢查詢的解釋計劃

我試着加入explain plan for select 1 from dual但它一直拋出異常。

回答

1

您沒有太多選擇。對於一些未知的原因Hibernate和enclipselink不支持這樣的事情見setting-context-in-a-jpa

所以,你必須使用純Oracle解決方案

  • 創建LOGON TRIGGER ON SCHEMA,使會議在其跟蹤。運行應用程序並分析跟蹤文件,然後
  • 檢查v$SQL_PLAN視圖的內容並檢查查詢的真實執行計劃。

如果你堅持要從Eclipse鏈接開始,那麼你必須以某種方式啓動事務,以避免將會話返回到池中。查詢v$mystatv$session得到SID,SERIAL#(以獲得唯一的會話標識符)。然後執行你的查詢。並且從v$session獲得SQL_IDPREV_SQL_ID。檢查v$sql_planv$sql_text以獲取查詢sql文本和exec計劃。