我们正在寻找一种方法来记录对Oracle中存储过程的任何调用,并查看哪些参数值用于调用。如何使用参数值记录/跟踪Oracle存储过程调用?
我们使用Oracle 10.2.0.1
我们可以登录SQL语句,看到了约束变量,但是当我们跟踪的存储过程,我们看到绑定变量B1,B2等,但没有值。
我们希望看到我们在MS SQL Server Profiler中看到的同类信息。
感谢所有帮助
我们正在寻找一种方法来记录对Oracle中存储过程的任何调用,并查看哪些参数值用于调用。如何使用参数值记录/跟踪Oracle存储过程调用?
我们使用Oracle 10.2.0.1
我们可以登录SQL语句,看到了约束变量,但是当我们跟踪的存储过程,我们看到绑定变量B1,B2等,但没有值。
我们希望看到我们在MS SQL Server Profiler中看到的同类信息。
感谢所有帮助
你可以看看的DBMS_APPLICATION_INFO package。这允许你用任何你想要的信息来“测试”你的PL/SQL代码 - 但是它确实需要增加对每个程序的调用来进行检测。
另请参阅this AskTom thread关于使用DBMS_APPLICATION_INFO来监视PL/SQL。
我想你是用一种奇怪的方式使用“log”这个词。
我们可以登录SQL语句...
你真的是说你可以跟踪使用绑定变量的SQL语句?托尼的回答是针对记录你在做什么的能力。这总是优于追踪,因为只有你知道什么对你很重要。也许你的进程的执行很大程度上依赖于查询表中的值。由于该值发生变化并且不作为参数传入,因此可能会丢失该信息。
但是如果你真的记录你在做什么,你可以在你的日志表中包含该值,你不仅知道你通过的变量,而且知道关键值。
alter system set events'10046 trace name context forever,level 12';那是你在用什么?
是的,我想我应该用“追踪”一词
我会尽力来形容我们做了什么:
使用Enterprise Manager(如DBO)我们去参加会话,并开始一丝丝
开始跟踪 启用等信息,绑定信息
运行我们的应用程序,它击中DB操作
完成跟踪,对输出运行此:
TKPROF .PRC output2.txt SYS =没有记录= record.txt讲解= DBO @ DBINST/PW
什么我们希望看到的是,“这些程序被称为与这些参数”我们现在得到的是:
Begin dbo.UPKG_PACKAGENAME.PROC(:v0, :v1, :v2 ...); End;
/
Begin dbo.UPKG_PACKAGENAME.PROC2(:v0, :v1, :v2 ...); End;
/
...
所以我们可以追踪所调用的程序,但我们没有得到实际的参数值,仅仅是:V0等。
我的理解是,我们所做的与alter system语句相同,但请告诉我们,如果情况并非如此。
感谢
你采用了10G 让这个 EXEC dbms_monitor.session_trace_enable尝试(SESSION_ID => XXX,SERIAL_NUM => XX,等待=>真,结合=> TRUE); 你可以得到session_id = SID & serial_num = SERIAL#from v $ session