调用oracle记录,如何使用参数值记录/跟踪Oracle存储过程调用?

4 个答案:

答案 0 :(得分:6)

您可以查看DBMS_APPLICATION_INFO package。这允许您使用您想要的任何信息“检测”您的PL / SQL代码 - 但它确实需要为每个要检测的过程添加调用。

另请参阅this AskTom thread使用DBMS_APPLICATION_INFO监视PL / SQL。

答案 1 :(得分:2)

我认为你是以一种奇怪的方式使用“log”这个词。

我们可以记录SQL语句......

你真的想说你可以使用绑定变量跟踪sql语句吗?托尼的回答是针对记录你正在做的事情的能力。这总是优于追踪,因为只有你知道什么对你很重要。也许您的进程的执行在很大程度上取决于从表中查询值。由于该值发生更改并且未作为参数传递,因此您可能会丢失该信息。

但是如果你真的记录了你正在做的事情,你可以在你的日志表中包含这个值,你不仅知道你传入的变量,还知道那个键值。

更改系统设置事件'10046跟踪名称上下文永远,级别12';那是你用的吗?

答案 2 :(得分:0)

是的,我想我应该使用“追踪”一词

我会尝试描述我们做过的事情:

使用企业管理器(作为dbo)我们已经进入会话,并开始跟踪

开始追踪

启用等待信息,绑定信息

在我们的应用程序上运行一个操作数据库

完成跟踪,在输出上运行:

tkprof .prc output2.txt sys = no record = record.txt explain = dbo @ DBINST / PW

我们希望看到的是,“使用这些参数调用这些程序”我们得到的是:

Begin dbo.UPKG_PACKAGENAME.PROC(:v0, :v1, :v2 ...); End;

/

Begin dbo.UPKG_PACKAGENAME.PROC2(:v0, :v1, :v2 ...); End;

/

...

所以我们可以跟踪被调用的过程,但是我们没有得到实际的参数值,只有:v0等。

我的理解是,我们所做的与alter system声明相同,但如果情况并非如此,请告诉我们。

由于

答案 3 :(得分:0)

你正在使用10g吗?

让我试试吧

exec dbms_monitor.session_trace_enable(session_id => xxx,serial_num => xx,waits => true,binds => true);

你可以得到session_id = SID& serial_num = SERIAL#from v $ session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值