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包来跟踪会话,这种情况一般是

通过该程序包可以跟踪从客户机到中间层、再到后端数据库的任何用户会话,从而可以较为容易的标识创建大量工作量的特定用户。
会话:基于会话ID和序列号 DBMS_MONITOR.session_trace_enable(sid,serial#,true);
                         DBMS_MONITOR.session_trace_enable(sid,serial#,false);
客户端标识符:允许跨越多个会话设置跟踪,基于登录ID指定终端用户。
              客户端设置的参数:DBMS_SESSION.SET_IDENTIFIER过程设置该值
              运行语句:dbms_monitor.client_id_trace_enable('identifier',true,false);
                       dbms_monitor.client_id_trace_disable('identifier');
实例:基于实例名指定给定的实例
              dbms_monitor.database_trace_enable(instance_name=>'orcl');
服务名:指定一组相关的应用程序,使用DBMS_SERVICE.CREATE_SERVICE过程设置该值,
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_MODULE过程设置该值
操作名:开发人员在其应用程序中使用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级别的跟踪

如何跟踪某个session的SQL的更多相关文章

  1. 快速找到跟踪其他session产生的trc文件

    掌握该技术最根本的是需要搞清楚session跟踪文件存放的路径和生成跟踪文件的命名规则,不然,在已经存在成全上万trc文件的生产环境中,要想快速正确的找到跟踪其他SESSION产生的trc文件就如大海 ...

  2. herbnate session.createSQLQuery(sql) 和 session.createQuery(sql)使用

    public class DistributeDao implements Serializable{ private SessionFactory sessionFactory; public Se ...

  3. hibernate session.createSQLQuery(sql); 通过命令删除

    @Override public boolean deleteBySql(String sql) { Session session = getSession(); @SuppressWarnings ...

  4. 查询oracle比较慢的session和sql

    注:本文来源:sxhong   <查询oracle比较慢的session和sql> ---查询最慢的sql select * from ( select parsing_user_id,e ...

  5. gpdb删除segment上残余的session和sql

    转载请注明出处:gpdb删除segment上残余的session和sql 最近公司的gpdb的变卡,导致线上系统查询队列阻塞,用户一点数据都查不出来. 每天早上我和同事都得用我们自家做的gpdb运维平 ...

  6. Session 与 sql 会话,mysql 权限设置,mybatis 逆向工程

    Session 与 Sql 会话注意点: 通过 sqlSessionFactoty 工厂建立的与sql的会话,在进行相应的插入操作后,需要进行 commit 操作才会让数据库执行插入更新操作.如何主键 ...

  7. web 存储方式汇总:Cookies,Session, Web SQL; Web Storage(LocalStorage ,SessionStorage),IndexedDB,Application Cache,Cache Storage

    1 1 1 web 存储方式汇总: 旧的方式: Cookies; Session; Web SQL; 新的方式 HTML5 : Web Storage(LocalStorage ,SessionSto ...

  8. Oracle v$session/v$sql 表

    在本视图中,每一个连接到数据库实例中的 session都拥有一条记录.包括用户 session及后台进程如 DBWR, LGWR, arcchiver等等. V$SESSION中的常用列 V$SESS ...

  9. 微软Ignite大会我的Session(SQL Server 2014 升级面面谈)PPT分享

       我在首届微软技术大会的Session分享了一个关于SQL Server升级的主题,现在将PPT分享出来.     您可以点击这里下载PPT.     也非常感谢微软中国邀请我进行这次分享.

随机推荐

  1. python库myqr生成二维码

    python中有一个好玩的库,不仅可以生成各种花色的二维码,还可以生成动态二维码. MyQR是一个能够生成自定义二维码的第三方库,可以根据需要生成普通二维码.带图片的艺术二维码,也可以生成动态二维码 ...

  2. 网易云音乐mp3外链、真实地址下载方法

    一个网易音乐外链地址长期有效,很简单的方法: 第一步打开网易云音乐,随便找到一首歌,播放,复制网址的ID, 例如:杨钰莹的心雨,网址是: http://music.163.com/#/song?id= ...

  3. 【Fiddler学习】Fiddler抓包HTTPS请求和手机抓包

    一.安装Fiddler 百度搜索:Fiddler抓包工具,然后安装即可. 然后打开Fiddler工具,打开浏览器随意输入任何网址,就可以在Fiddler看到抓包信息. 但是:默认情况下,Fiddler ...

  4. 初识IP基础分类、CIDR

    IP地址概念 IP(IPv4)地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~2 ...

  5. 自写UiAutomator 调试类

    package sms_test; import java.lang.*; import java.util.ArrayList; import java.util.Collection; impor ...

  6. 虚拟机中安装CentOS7

    初始安装: 1.安装新虚拟机时,选择稍后安装操作系统,这可以自己设置语言等信息 2.修改自定义硬件:为网卡生成一个mac地址,(这里需要注意,有时网卡会冲突,导致连接时好时坏,以后可以删除掉网卡,重新 ...

  7. python学习笔记_week8

    一.Socket 当服务端传的东西大于客户端的最大值时怎么办?①改大buffer不行(有上限)②多传几次(用for循环必须要知道循环几次,所以不用for循环,用while) 服务端: import o ...

  8. Spring cloud(2)B Eureka 注册微服务到服务中心

    1.在provide上添加pom(必须加上web)   如果不加 启动后就会自己关闭 <dependency> <groupId>org.springframework.clo ...

  9. element el-upload组件获取文件名

    组件的连接:http://element-cn.eleme.io/#/zh-CN/component/upload 需求:点x按钮,获取文件名传到后端服务,把文件从服务器删除 分析: 仔细看文档,会发 ...

  10. 【平台兼容性】jeecg3.7 兼容weblogic 部署改造方案

    MyEclipse 配置 WebLogic 10.3.3请参考: https://my.oschina.net/aini3884/blog/895689 常见问题: 1. problem: cvc-e ...