诊断性能问题:使用扩展SQL跟踪数据(2)
文章作者 100test 发表时间 2007:03:14 13:54:20
来源 100Test.Com百考试题网
接下来要激活跟踪。有几种方法可以采用,包括下面两个:
方法一是使用DBMS_SUPPORT:
CODE:
dbms_support.start_trace_in_session(
sid => 42,
serial# => 1215,
waits => true,
binds => true)
/* code to be traced executes during this time window */
dbms_support.stop_trace_in_session(
sid => 42,
serial => 1215)
若想激活扩展SQL跟踪,请不要使用名为SET_SQL_TRACE_IN_SESSION的DBMS_SUPPORT过程。该过程不允许在跟踪文件中指定等待和绑定的数据。
第二种方法更为精致,但在Oracle数据库10g之前的版本中并不支持这种方法。 DBMS_MONITOR包的引入解决了许多复杂诊断数据收集问题,这些问题是由连接共享和多线程操作所引起的。你可以在Oracle数据库10g中指定要跟踪的服务、模块或行动,而不指定要跟踪的Oracle数据库会话:
CODE:
dbms_monitor.serv_mod_act_trace_enable(
service_name => APPS1 ,
module_name => PAYROLL ,
action_name => PYUGEN ,
waits => true,
binds => true,
instance_name => null)
/* code to be traced executes during this time window */
dbms_monitor.serv_mod_act_trace_disable(
service_name => APPS1 ,
module_name => PAYROLL ,
action_name => PYUGEN )
利用DBMS_MONITOR包,Oracle可为要跟踪的特定的业务操作提供完全支持激活或停止诊断数据收集的方法。
测试扩展SQL跟踪。试一试吧。查看第一个跟踪文件只需使用一个简单的SQL*Plus会话,就如同下面这样:
CODE:
alter session set timed_statistics=true.
alter session set max_dump_file_size=unlimited.
alter session set tracefile_identifier= Hello .
/* only in Oracle Database 8.1.7and later */
alter session set events 10046 trace name context forever, level 12 .
0select Howdy, it is ||sysdate from dual.
exit.