2010-10-11 32 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