ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 跟踪session

跟踪session

原创 Linux操作系统 作者:cdbdp 时间:2011-10-26 15:15:45 0 删除 编辑

第一种方法:

获取当前用户所连接的所有session的sid:select sid from v$session where audsid=userenv('sessionid');

获取当前用户当前终端所连接的session的sid:select * from v$session where sid in(select sid from v$mystat);

首先你要确定跟踪哪个session,比如select sql_address from v$session where sid=505;

然后,select * from v$sqltext where address= order by piece;就可以找出session正在执行的sql 了

另,也可以通过查v$open_cursor来完成。

第二种方法:

捕捉运行很久的SQL

SELECT username, SID, opname,
       ROUND (sofar * 100 / totalwork, 0) || '%' AS progress, time_remaining,
       sql_text
  FROM v$session_longops, v$sql
 WHERE time_remaining <> 0
   AND sql_address = address
   AND sql_hash_value = hash_value

如果跟踪自己的会话或者是别人的会话   
  [A]跟踪自己的会话很简单   
  Alter   session   set   sql_trace   true|false   
  如果跟踪别人的会话,需要调用一个包   
  exec   dbms_system.set_sql_trace_in_session(sid,serial#,true|false)   
  or   
  exec   dbms_system.set_sql_trace_in_session(sid,serial#,8,’’),这里的8是跟踪级别   
  跟踪的信息在user_dump_dest   目录下可以找到   
  可以通过Tkprof来解析跟踪文件,如   
  Tkprof   原文件   目标文件   sys=n   
  
  
  怎么设置整个数据库 系统跟踪   
  [A]其实文档上的alter   system   set   sql_trace=true是不成功的   
  但是可以通过设置事件来完成这个工作,作用相等   
  alter   system   set   events   
      ‘10046   trace   name   context   forever,level   1’;   
  如果关闭跟踪,可以用如下语句   
  alter   system   set   events   
      ‘10046   trace   name   context   off’;   
  其中的level   1与上面的8都是跟踪级别   
  level   1:跟踪SQL语句,等于sql_trace=true   
  level   4:包括变量的详细信息     sql_text
  level   8:包括等待事件   
  level   12:包括绑定变量与等待事件

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23382569/viewspace-709725/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: exist
请登录后发表评论 登录
全部评论

注册时间:2010-02-22

  • 博文量
    51
  • 访问量
    105410