[ 来源: | 作者: | 时间:2007-07-20 | 收藏 | 推荐 ] 【大 中 小】
在具有许多活跃用户的繁忙生产环境中,跟踪SQL会话是费时且十分复杂的,因为在任何使用连接池的多层系统中处理SQL语句可能要涉及多个进程,或者甚至是不同的实例。
利用Oracle数据库10g,Oralce通过一个新的内置软件包DBMS_MONITOR合理化了SQL的跟踪,这个软件包中包含以前无书面记载的跟踪工具(如DBMS_SUPPORT软件包)的功能。现在,您可以轻松地从头到尾--从客户机到中间层再到后端--跟踪任何用户的会话,并且基于特定的客户ID、模块或动作生成跟踪文件。
此外,Oracle数据库10g包含一种新的实用程序trcsess,它可以让您基于会话ID或模块名称之类的条件,有选择地从大量跟踪文件中抽取出跟踪数据,并将它们保存到一个文件中。该实用程序在共享服务器配置中特别有用,因为调度程序可能把每一个用户请求传递给不同的共享服务器进程,从而为任何给定的会话产生多个跟踪文件。与通过大量跟踪文件发掘信息不同,Oracle数据库10g的trcsess可以让您获得关于单一用户会话的整合后的跟踪信息。
开始
和Oracle数据库的以前版本一样,跟踪文件将被输出到由服务器的初始化文件(或spfile)的user_dump_dest参数指定的目录中。默认的位置取决于;例如,对于使用DBCA的Microsoft Windows平台,默认位置是$ORACLE_BASE/instance_name/admin/udump,其中instance_ name是Oracle实例的名称。您可以通过使用以下改变会话命令来动态地更改该参数: it55.com
| alter session set user_dump_dest="c:/kflosstrace"; |
| alter session set tracefile_identifier ="kfloss_test"; |
www.it55.com
| SQL> exec dbms_monitor.serv_mod_act_trace_enable (service_name=>'testenv', module_name=>'product_update'); |
| SQL> exec dbms_monitor.client_id_trace_enable (client_id=>'kimberly'); |
| SQL> select sid, serial#, username from v$session; SID SERIAL# USERNAME ------ ------- ------------ 133 4152 SYS 137 2418 SYSMAN 139 53 KIMBERLY 140 561 DBSNMP 141 4 DBSNMP . . . 168 1 169 1 170 1 28 rows selected. |
| SQL> exec dbms_monitor.session_trace_enable (session_id=>139, serial_num=>53, waits=>true, binds=>false); |
it55.com
(编辑:IT资讯之家 www.it55.com)