首页 > 代码库 > 追踪sql会话 dbms_monitor
追踪sql会话 dbms_monitor
经常会遇到一个会话中存在sql性能问题,但无法定位哪一个sql导致DB性能问题较高,这是我们需要对这个session进行监控可以通过dbms_monitor包来实现。
首先确定要监控的会话sid及serial#,可以通过v$session视图获得
select sid, serial#, username from v$session where ...
确定session后,调用dbms_monitor包的session_trace_enable过程:
SQL> exec dbms_monitor.session_trace_enable(session_id=>198, serial_num=> 7, waits=>true, binds=>true);
PL/SQL procedure successfully completed.
这个例子选择了对等待信息及绑定变量的跟踪。
追踪整个会话的资源成本使用很高,一般会收集如下信息:
会话中各个sql的逻辑、物理读
cpu及运行时间
sql处理的行数
库缓存的未命中数
提交及回滚次数
记录每条语句的实际执行计划的行运算
每条sql语句的等待事件
可选参数:
session_id标识所要追踪会话的sid,如果忽略讲会追踪所有会话。
serial_num会话的顺序号。
waits是否获取等待事件信息
binds是否获取绑定变量的信息
关闭会话追中
SQL> exec dbms_monitor.session_trace_disable(session_id=>198, serial_num=> 7); PL/SQL procedure successfully completed.
追踪sql会话 dbms_monitor
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。