开发者社区> 问答> 正文

MySQL中如何跟踪某个 session 的SQL?

MySQL中如何跟踪某个 session 的SQL?

展开
收起
晓风瑟瑟 2021-10-14 19:39:00 660 0
2 条回答
写回答
取消 提交回答
  • 1、可以开启MYSQL中的日志功能,通过日志进行查询; 2、也可以通过information_schema.optimizer_trace进行查询;

    2021-10-16 00:54:29
    赞同 展开评论 打赏
  • 1 oracle自带的sql trace程序可以跟踪本地session

    sys: alter system set sql_trace = true;对所有会话跟踪
    
    schema: alter session set sql_trace = true; 对某个session 会话跟踪sql语句
    
     用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级别的跟踪

    2021-10-15 23:24:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像