使用DBMS_MONITOR启用SQL跟踪2
●组件级别
包dbms_monitor分别提供了过程serv_mod_act_trace_enable和serv_mod_act_trace_disable来利用服务名、模块名和动作名为组件启用和禁用SQL跟踪。要充分使用这些过程,你需要设置会话属性、模块名和动作名。
以下PL/SQL调用为所有使用指定参数的会话启用SQL跟踪:
dbms_monitor.serv_mod_act_trace_enable(service_name=>'DBM11203.antognini.ch',
module_name =>'mymodule',
action_name =>'myaction',
waits =>TRUE,
binds =>TRUE,
instance_name=>NULL,
plan_stat=>'all_executions');
这里唯一一个没有默认值的参数是第一个service_name。参数module_name和action_name默认值分别为any_module和any_action。同时,NULL也是一个有效的值。如果指定了参数action_name的值,那么也必须指定参数module_name的值。如果不设置,则会引发ORA-13859错误。在RAC环境下,参数instance_name用来限定具体跟踪哪个数据库实例。默认情况下,SQL跟踪对所有数据库实例生效。请注意,参数service_name、module_name、action_name和instance_name区分大小写。
由于设置保存在数据字典中,数据库实例重启不会影响使用。
与客户端级别的SQL跟踪相同,在dba_enabled_traces和12.1多租户环境下的cdb_enabled_traces视图里,通过过程serv_mod_act_trace_enable,会显示启用了SQL跟踪的用户标识符组件以及使用的参数。使用以上PL/SQL调用启用SQL跟踪后,你可以查询到以下信息:
SELECT primary_id AS service_name, qualifier_id1 AS module_name,