使用dbms_monitor

dbms_monitor可以跟踪从客户端到中间层,再到后端数据库的任何用户的回话。从而可以比较容易的确定闯将大量工作负载的特定的回话。此程序包需要有DBA角色才能执行。

dbms_monitor可以机油以下信息:

会话,客户端标识符,实例,服务名,模块名,操作名。

会生成如下信息:

等待,绑定,实例名,计划统计

1.基于会话ID和序列号的设置跟踪

先确定要跟踪的会话的SID和序列号

select sid,serial#,username from v$session;

使用dbms_monitor启用跟踪,

exec dbms_monitor.session_trace_enable(sid,serial#,waits,binds,plan_stat);

执行语句如下:

exec dbms_monitor.session_trace_enable(24,15,true,false);

关闭跟踪,执行如下语句:

exec dbms_monitor.session_trace_disable(24,15);

跟踪当前会话,可以执行如下:

exec dbms_monitor.session_trace_enable(null,null)   -----把sid和serial#都设置为空;

2.基于客户端标识符设置跟踪

先为当前会话设置标识符:

exec dbms_session.set_identifier('wlp id');

验证是否设置成功

select sid,serial#,username,client_identifier from v$session where client_identifier is not null;


现在可以为这个客户端标识符设置跟踪:

exec dbms_monitor.client_id_trace_enable('wlp id',true,false);

第二个参数用于waits,默认true,第三个参数为binds,默认false。使用带client_id跟踪的好处是,无论是否重启实例,无论用任何进程或会话id,用户的活动都能被记录跟踪。

3.设置服务名/模块名/操作名的跟踪

启用基于服务名的跟踪(假设服务名为wlp1),可执行如下语句:

exec dbms_monitor.serv_mod_act_trace_enable(service=>'wlp1');--跟踪服务名为wlp1的所有会话


为了启用服务名,模块名和操作名组合的跟踪,可执行如下语句:

exec dbms_monitor.serv_mod_act_trace_enable(service_name=>'wlp1',module_name=>'n_update',action_name=>'insert_item');


为了跟踪整个数据库或实例,可以执行如下语句(不推荐)

exec dbms_monitor.database_trace_enable(waits=>true,binds=>false,instance_name=>'orcl');


4.启用跟踪视图

查看dba_enable_traces和dba_enable_aggregations视图可以看到启用的跟踪和收集统计信息。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值