2010-10-11 63 views
2

我需要爲我的長SQL腳本收集統計信息。腳本文件由Java應用程序生成並由第三方快速DB驅動程序執行。Oracle AUTOTRACE替代方案

這樣我就不能使用AUTOTRACE,因爲它不是SQLPlus。但出於性能原因,我需要知道腳本中每個語句的統計信息。

您可以建議方法或最佳做法嗎?

我看着STATSPACK的方向,其次是tkproof。 1. STATSPACK看起來像機器,打破了車輪上的蝴蝶。不是嗎? 2. tkproof需要某種特權,我擔心Java應用程序用戶沒有這些特權。

還有別的嗎?

回答

1

你可以從V $ SQL中的一些統計數據:

SELECT q.* 
FROM v$session s 
, v$sql q 
WHERE s.sql_address = q.address 
AND s.sql_hash_value = q.hash_value 
AND s.sid   = :SID 
; 

還有v$session_longops這顯示了超過6秒跑完所有操作。

+0

有v $ mystat和v $ sessstat視圖等等。但可能會有一個實現SQLPlus AUTOTRACE功能的輕量級包。 – drnk 2010-10-11 13:37:16

1

Oracle用戶需要生成跟蹤文件的唯一升級權限是ALTER SESSION。如果您的用戶在SYS.DBMS_MONITOR上執行,您甚至可能不需要這樣做,因爲SESSION_TRACE_ENABLE和SESSION_TRACE_DISABLE允許實例化跟蹤。

另一方面,檢索跟蹤文件需要DBA或DBA的幫助來執行配置,以允許跟蹤文件公開(生產中的一個壞主意)。 Dion Cho有一個很好的例子來說明如何啓用Oracle跟蹤文件查詢here.

+0

感謝您使用有用的鏈接!這是一個很好的方法。但以這種方式長長的腳本我需要pl/sql模擬tkproof :)我想想。 – drnk 2010-10-12 08:40:20