如何在服务器错误后在触发器上记录绑定变量



我需要跟踪绑定变量到返回Oracle错误的查询的值。

由于返回错误的查询不是在v$sql_bind_capturev$sqlarea中绘制的,所以我无法查看这些表。

然后我在Servererror之后创建了一个触发器,并将查询记录在我创建的跟踪表中。不幸的是,绑定变量没有被跟踪(我读取了:p0:myVar等…)

如果我没有访问会话的权限,我该如何跟踪这些变量的值?

您可以跟踪会话并设置LEVEL以捕获绑定变量值。

SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 4'; 

跟踪事件的不同LEVELs:-

0 – No trace. Like switching sql_trace off.
2 – The equivalent of regular sql_trace.
4 – The same as 2, but with the addition of bind variable values.
8 – The same as 2, but with the addition of wait events.
12 – The same as 2, but with both bind variable values and wait events.

看看如何在Oracle 中生成跟踪文件-SQL跟踪和TKPROF

最新更新