zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

如何跟踪某个session的SQL详解程序员

SQL程序员 如何 详解 session 某个 跟踪
2023-06-13 09:20:21 时间

1 oracle自带的sql trace程序可以跟踪本地session

  sys: alter system set sql_trace = true;对所有会话跟踪

  schema: alter session set sql_trace = true; 对某个session 会话跟踪sql语句

  11g可以通过   select * from v$DIAG_INFO;来获取当前trace文件的位置

  10g可用:当前用户:
SELECT d.value|| / ||lower(rtrim(i.instance, chr(0)))|| _ora_ ||p.spid|| .trc trace_file_name
from ( select p.spid from v$mystat m,v$session s, v$process p
     where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
    ( select t.instance from v$thread t,v$parameter v
     where v.name = thread and (v.value = 0 or t.thread# = to_number(v.value))) i,
    ( select value from v$parameter where name = user_dump_dest ) d;

如果是查询其他用户session的跟踪文件,则根据用户的sid和#serial使用如下查询:

SELECT d.value|| / ||lower(rtrim(i.instance, chr(0)))|| _ora_ ||p.spid|| .trc trace_file_name

from

    ( select p.spid from v$session s, v$process p

     where s.sid=’’ and s. SERIAL#= and p.addr = s.paddr) p,

    ( select t.instance from v$thread t,v$parameter v

     where v.name = thread and (v.value = 0 or t.thread# = to_number(v.value))) i,

    ( select value from v$parameter where name = user_dump_dest ) d

 用tkprof 来格式化跟踪文件输出

 tkprof 输出内容包括 1 sql 语句 2统计信息 3explain table 执行计划

2 基于DBMS_MONITOR包来跟踪会话,这种情况一般是


通过该程序包可以跟踪从客户机到中间层、再到后端数据库的任何用户会话,从而可以较为容易的标识创建大量工作量的特定用户。
dbms_monitor.serv_mod_act_trace_enable(service_name= orcl1 ,module_name= salary_update ,action_name= insert_item );
dbms_monitor.serv_mod_act_trace_disable(service_name= orcl1 ,module_name= salary_update ,action_name= insert_item );
操作名:开发人员在其应用程序中使用DBMS_APPLICATION_INFO.SET_ACTION过程设置该值 trcsess提取跟踪文件,可以基于会话ID或者模块名称,具体参考trcsess帮助usage

 这个很常用

3  DBMS_system包也可以跟踪系统中其他session的sql执行语句

  dbms_system.set_sql_trace_in_session(sid,serial#,true);

  dbms_system.set_sql_trace(true)跟踪本地session

4 使用10046事件来实现

运用10046进程sql跟踪
全局或者session范围
level 1
level 4 : 1+bind variable
level 8 : 1+wait events
level 12 : 1 +4+8
tkprof 的时候 4,8,12的信息被忽略
全局设定,修改initial文件
event= 10046 trace name context forever,level12
alter system set events
session设定
alter session set events= 10046 trace name context forever,level 8
alter session set events= 10046 trace name context off

以上4中session跟踪方法,通过dbms_monitor,和dbms_system可以用来跟踪其他指定session的sql,其他两个方法都是本地

session或者system级别的跟踪

7191.html

服务器部署程序员系统优化网站设置运维