原文链接:TDPUB数加社区
1. 设置标识
1.1 设置服务标识
由连接选项控制,暂时没有找到set service方法
1.2 设置模块标识
begindbms_application_info.set_module('module_test','select');end;
1.3 设置客户端标识
beginDBMS_SESSION.set_identifier('client_identifier_test');dbms_application_info.set_client_info(client_info => 'client_test');end;
select s.client_identifier,s.client_info,s.module,s.service_name,s.action from v$session s where s.sid=userenv('sid')CLIENT_IDENTIFIER CLIENT_INFO MODULE SERVICE_NAME ACTIONclient_identifier_test client_test module_test PROD_PRIMARY_01 select
2. 为标识开启跟踪
开启跟踪
1) dbms_monitor.client_id_trace_enable
2) dbms_monitor.session_trace_enable
3) dbms_monitor.serv_mod_act_trace_enable
开启统计信息收集
1) dbms_monitor.client_id_stat_enable
2) v$sesstat--会话状态信息不需要自动开启,直接可以查询
3) dbms_monitor.serv_mod_act_stat_enable
2.1
begindbms_monitor.client_id_trace_enable(client_id => 'client_identifier_test');end;
开启client资源消耗统计
begindbms_monitor.client_id_stat_enable(client_id => 'client_identifier_test');end;select * from v$client_stats;--开启之后就能查到对应的值
begindbms_monitor.serv_mod_act_stat_enable(service_name => 'PROD_PRIMARY_01',module_name => 'test02');end;select * from v$serv_mod_act_stats s ;--如果查不到值,需要在sqlplus开启
测试client跟踪
语法:
beginDBMS_SESSION.set_identifier('client_identifier_test');end;
可以多开启几个窗口,分别测试
比如我新开窗口,执行下面语句
窗口1
{beginDBMS_SESSION.set_identifier('client_identifier_test');end;select * from cux_test1}
窗口2
{beginDBMS_SESSION.set_identifier('client_identifier_test');end;select * from cux_test2}
{dbms_monitor.session_trace_enable;--开启会话级别跟踪,保证生成trace文件,但未设置client标识符select * from cux_test3}
trcsess output=/tmp/client_identifier_test_trace.trc clientid='client_identifier_test' usr/local/oracle19c/diag/rdbms/prod_primary/DUPDB/trace/*.trc
/usr/local/oracle19c/diag/rdbms/prod_primary/DUPDB/trace替换成自己的trace文件所在路径/*******************/
2.2
开启module跟踪
语法:
begindbms_monitor.serv_mod_act_trace_enable(service_name => 'PROD_PRIMARY_01',module_name => 'module_test');end;
同样按2.1一样,开启多个窗口测试
窗口1
{begindbms_application_info.set_module('module_test',action_name =>'select test1');end;select * from cux_test1}
窗口2
{begindbms_application_info.set_module('module_test',action_name =>'select test2');end;select * from cux_test2}
{begindbms_application_info.set_module('module_others',action_name =>'select test3');end;select * from cux_test3}
trcsess output=/tmp/client_identifier_test_trace.trc service='PROD_PRIMARY_01' module='module_test'/usr/local/oracle19c/diag/rdbms/prod_primary/DUPDB/trace/*.trc/usr/local/oracle19c/diag/rdbms/prod_primary/DUPDB/trace替换成自己的trace文件所在路径/*******************/
trcsess 语法:
trcsess [output=<output file name >] [session=<session ID>] [clientid=<clientid>][service=<service name>] [action=<action name>] [module=<module name>] <trace file names>output=<output file name> output destination default being standard output.session=<session Id> session to be traced.Session id is a combination of session Index & session serial number e.g. 8.13.clientid=<clientid> clientid to be traced.service=<service name> service to be traced.action=<action name> action to be traced.module=<module name> module to be traced.<trace_file_names> Space separated list of trace files with wild card '*' supported.
更多Oracle课程内容 可添加下方老师获取

文章转载自云贝教育,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




