我需要为我的长SQL脚本收集统计信息。由Java应用程序生成并由第三方快速DB驱动程序执行的脚本文件。
这样我就不能使用AUTOTRACE了,因为它不是SQLPlus。但出于性能原因,我需要知道脚本中每个语句的统计信息。
您能建议方法或最佳做法吗?
我看向STATSPACK的方向,其次是tkproof。 1. STATSPACK看起来像打破车轮上的蝴蝶的机器。不是吗? 2. tkproof需要一些权限,我担心Java应用程序用户没有这样的权限。
还有其他什么吗?
答案 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.