【发布时间】:2014-04-01 15:39:37
【问题描述】:
我需要捕获 Oracle 存储过程调用(带参数)以跟踪应用程序(使用 JDBC 连接到数据库)。对于 MS SQL SERVER 中的 Rpc:Completed 事件,我需要类似 sp_trace_setevent 的东西。
我无权访问此应用程序,但几乎拥有数据库中的所有权限。我想留在 PL/SQL(和 Oracle SQL Developer 3.2.20)。
我试过了:
-
Oracle SQL Developer UI“工具”/“实时 SQL 监控”和“工具”/“会话”工具,但无法理解如何启用累积信息而不是捕获瞬间快照。
李> 正在探索
v$sql- 似乎没有 sp 调用。v$sqlarea差异(Oracle: is there a tool to trace queries, like Profiler for sql server?,mdj3884 回复)-在那里我可以找到我的测试调用,但没有参数...来自 Tom 文章的建议:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:767025833873。特别是,它循环通过
v$sqltext_with_newlines,但我不明白什么是脚本结果。更像是瞬间快照;不是吗?但是为什么他们称之为跟踪呢?使用
DBMS_APPLICATION_INFO- 据我了解,我可以将自定义信息添加到V$SESSION和V$SESSION_LONGOPS- 它对于监控任务很有用,但我无法想象它如何用于累积有关 sp 调用及其参数的信息。使用
DBMS_MONITOR启用跟踪文件。但我找不到启用仅跟踪 sp 调用事件的选项,它还需要访问服务器文件。DBMS_PROFILER- 收集据我所知,默认情况下它只收集统计信息(最小、最大时间);应该可以向plsql_profiler_runs添加自定义信息,但我找不到这个表(当DBMS_PROFILER到位时)。
接下来要看什么?我错过了什么?
附:如果唯一的方法是更改 SP 主体(需要跟踪的那些 SP),那么在 Oracle 中从 sp 主体记录 sp 参数的最快和最安全的方法是什么?它可以记录到自定义表,但我可以选择生成其他类型的事件(不回滚,例如 SQL Server 自定义跟踪事件)?
【问题讨论】:
-
我不确定,但 DBMS_AUDIT_MGMT 可能允许您这样做。我知道它可以用来捕获表更改,所以也许它也可以捕获 PL/SQL 的东西。还有人知道吗?
-
(docs.oracle.com/cd/E11882_01/network.112/e36292/…)中AUDIT_TRAIL(DBMS_AUDIT_MGMT的对象)的定义说它是DDL操作发生的报告。我也找不到有关审核 sp 调用的信息。 :( 阅读 Oracle 文档太难了,我永远无法确定 100% 的结论。
标签: oracle oracle11g oracle-sqldeveloper profiler trace