您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何获取ODP.NET中通过OracleParameter传递的绑定变量的跟踪信息?

如何获取ODP.NET中通过OracleParameter传递的绑定变量的跟踪信息?

作为选项之一,您可以通过手动或自动(例如,在用户登录触发器中)为会话设置级别12或4的10046事件来打开具有绑定变量转储的sql跟踪:

alter session set events '10046 trace name context forever, level 12';

之后,将在由user_dump_dest参数指定的目录中生成跟踪文件

sql> show parameter user_dump_dest;

NAME                                 TYPE        VALUE                          
------------------------------------ ----------- ------------------------------ 
user_dump_dest                       string      D:\...\diag\rdbms\cdb\cdb 
                                                 \trace

这是一个例子:

sql> alter session set events '10046 trace name context forever, level 12';
  2 variable var number;
  3 exec :var := 1234567;     -- our bind variable
  4 select 1 from dual where 1234567 = :var ;

在新生成的跟踪文件中提供的其他信息中,我们可以找到有关查询,绑定变量及其值的信息:

在游标中解析#375980232 len = 40 dep = 0 uid = 103 oct = 3 lid = 103 tim = 2640550035 hv = 1641534478 ad =‘7ff5bd0baf0’sqlid =’ap9rzz5hxgp0f’ < -我们的查询 结束STMT PARSE#375980232:c = 0,e = 375,p = 0,cr = 0,cu = 0,mis = 1,r = 0,dep = 0,og = 1,plh = 0,tim = 2640550034 BINDS#375980232: Bind#0 oacdty = 02 mxl = 22(22)mxlc = 00 mal = 00 scl = 00 pre = 00 oacflg = 03 fl2 = 1000000 frm = 01 csi = 178 siz = 24 off = 0 kxsbbbfp = 16646e10 bln = 22 avl = 05 flg = 05 <-绑定变量的值

从Oracle 10g及更高版本开始,您还可以查询v$sql_bind_capture动态性能视图以获取有关绑定变量及其值的信息:

select t.parsing_user_id
     , t.sql_fulltext         -- text of a query
     , bc.name                -- name of a bind variable
     , bc.value_string        -- value of a bind variable
  from v$sqlarea t
  join v$sql_bind_capture bc
    on (bc.sql_id = t.sql_id)
  join v$session s
    on (s.user# = t.parsing_schema_id)
  where s.username = user
    and bc.name in (':VAR') -- name of a bind variable(s), 
                            -- value(s) of which we want to kNow

结果:

PARSING_USER_ID   sql_FULLTEXT                      NAME    VALUE_STRING   
 ------------------------------------------------------------------------ 
           103   select 1 from dual where 1 =:var  :VAR     1234567
dotnet 2022/1/1 18:32:07 有374人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶