oracle - 在 Oracle 中捕获/捕获存储过程调用(带参数)的快速方法?

标签 oracle oracle11g oracle-sqldeveloper profiler trace

我需要捕获 Oracle 存储过程调用(带参数)来跟踪应用程序(使用 JDBC 连接到数据库)。我需要类似 sp_trace_setevent 的东西来处理 MS SQL SERVER 中的 Rpc:Completed 事件。

我无权访问此应用程序,但拥有数据库的大部分权限。我想继续使用 PL/SQL(和 Oracle SQL Developer 3.2.20)。

我已经尝试过:

  1. Oracle SQL Developer UI“工具”/“实时 SQL 监控”和“工具”/“ session ”工具,但无法理解如何启用累积信息而不是捕获时刻快照。

    <
  2. 探索v$sql - 似乎没有 sp 调用。

  3. v$sqlarea 差异( Oracle: is there a tool to trace queries, like Profiler for sql server? ,mdj3884 回复) - 在那里我可以找到我的测试调用,但没有参数...

  4. Tom 文章的建议:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:767025833873 。特别是,它正在循环 v$sqltext_with_newlines,但我无法理解什么是脚本结果。更像是瞬间快照;不是吗?但为什么他们称之为跟踪呢?

  5. 使用DBMS_APPLICATION_INFO - 据我了解,使用它我可以将自定义信息添加到V$SESSIONV$SESSION_LONGOPS - 它对于监视任务很有用,但我无法想象它如何用于积累有关 sp 调用及其参数的信息。

  6. 使用DBMS_MONITOR启用对文件的跟踪。但我找不到仅启用跟踪 sp 调用事件的选项,而且它还需要访问服务器文件。

  7. DBMS_PROFILER - 据我了解,默认情况下它只收集统计信息(最短、最长时间);应该可以向 plsql_profiler_runs 添加自定义信息,但我找不到此表(当 DBMS_PROFILER 就位时)。

接下来看什么?我错过了什么?

附注如果唯一的一种方法是更改​​ SP 主体(需要跟踪的 SP),那么在 Oracle 中从 sp 主体记录 sp 参数的最快、最安全的方法是什么?它可以记录到自定义表,但我可以选择生成其他类型的事件(不回滚,例如 SQL Server 自定义跟踪事件)?

最佳答案

添加一些自定义功能来执行此操作很容易(请参阅下面的大部分所需内容),或者您可以使用 sqltrace 或企业管理器报告并搜索它们:

create package p_audit as 
 type t_param_type is table of varchar2(50) index by binary_integer;

 procedure p_audit (p_procedure varchar2, l_param_type t_param_type);
end;

create table audit_table (procedure_name varchar2(50), parameters varchar2(500))

create or replace package body p_audit is

procedure p_audit (p_procedure varchar2, l_param_type t_param_type) is
  pragma autonomous_transaction;  
begin
  insert into audit_table values (p_procedure,l_param_type(1));
  commit;
end;

end p_audit;

declare
  l_param_type p_audit.t_param_type;
begin
  l_param_type(1):='parameter 1';
  p_audit.p_audit('test procedure',l_param_type);
end;

关于oracle - 在 Oracle 中捕获/捕获存储过程调用(带参数)的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22790542/

相关文章:

c# - ORA-22288 : file or LOB operation FILEOPEN failed The system cannot find the path specified

oracle - 在oracle中创建物化 View 需要很长时间

oracle - 了解 Oracle SQL Developer 中执行解释计划的结果

sql - ORA-01408 : such column list already indexed

sql - TO_DATE 问题

php - oci_error为空

SQL找人条目狗最多

oracle11g - 如何在 Oracle DB 中提取序列 ddl

oracle-sqldeveloper - SQL Developer 启动失败

sql - 如何检索或读取 SQL 中特定列的注释