我编写了以下查询以获取oracle数据库中针对特定会话的最后执行的SQL语句.SQL文本不包含绑定变量的实际值.如何获取绑定变量值以及SQL文本.
SELECT * FROM v$SQLTEXT_WITH_NEWLINES WHERE address =
(SELECT prev_sql_addr FROM v$session WHERE audsid = userenv('SESSIONID'))
ORDER BY piece;
Run Code Online (Sandbox Code Playgroud)
Kir*_*ran 27
要获取绑定变量,您必须使用下面的代码,您不需要使用跟踪.
SELECT * FROM v$sql_bind_capture WHERE sql_id='';
Run Code Online (Sandbox Code Playgroud)
要么
SELECT NAME,POSITION,DATATYPE_STRING,VALUE_STRING
FROM v$sql_bind_capture WHERE sql_id='';
Run Code Online (Sandbox Code Playgroud)
http://shaharear.blogspot.com/2009/02/find-bind-variable-value.html
我认为默认情况下不存储绑定变量值.不考虑潜在的安全问题(看到其他会话的实际工作),要存储的数据量将是巨大的.
如果要查看绑定变量的值,则应激活该会话的跟踪.您可以通过在该会话中执行以下命令来执行此操作:
alter session set events '10046 trace name context forever, level 12';
Run Code Online (Sandbox Code Playgroud)