Oracle AUTOTRACE替代方案

时间:2010-10-11 13:03:17

标签: oracle statistics

我需要为我的长SQL脚本收集统计信息。由Java应用程序生成并由第三方快速DB驱动程序执行的脚本文件。

这样我就不能使用AUTOTRACE了,因为它不是SQLPlus。但出于性能原因,我需要知道脚本中每个语句的统计信息。

您能建议方法或最佳做法吗?

我看向STATSPACK的方向,其次是tkproof。 1. STATSPACK看起来像打破车轮上的蝴蝶的机器。不是吗? 2. tkproof需要一些权限,我担心Java应用程序用户没有这样的权限。

还有其他什么吗?

2 个答案:

答案 0 :(得分: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秒的操作。

答案 1 :(得分:1)

Oracle用户生成跟踪文件所需的唯一升级权限是ALTER SESSION。如果您的用户已在SYS.DBMS_MONITOR上执行,您甚至可能不需要,因为SESSION_TRACE_ENABLE和SESSION_TRACE_DISABLE允许实例化跟踪。

另一方面,检索跟踪文件需要DBA或DBA的帮助才能执行配置以允许跟踪文件公开(对生产一个坏主意)。 Dion Cho有一个很好的示例,说明如何启用查询Oracle跟踪文件here.