`

Oracle 10g的新特性 DBMS_MONITOR(原创)

 
阅读更多

概述
在 具有连接池或共享服务器的多层环境中,一个会话可以跨越多个进程,甚至跨越多个实例。DBMS_MONITOR是在Oracle 10g中引入的内置的程序包,通过该程序包可以跟踪从客户机到中间层、再到后端数据库的任何用户的会话。由于每个会话都会产生独立的trace文件,因而 可以较为容易地标识创建大量工作量的特定用户。DBMS_MONITOR取代了传统的跟踪工具,例如DBMS_ SUPPORT。需要具有DBA角色才可以使用DBMS_MONITOR。
端对端的应用程序跟踪可以基于如下:
会话:基于会话ID(SID)和序列号。
客户端标识符:允许跨越多个会话设置跟踪。基于登录ID指定终端用户。使用DBMS_SESSION.SET_IDENTIFIER过程设置该值。
实例:基于实例名指定给定的实例。
服务名:指定一组相关的应用程序。使用DBMS_SERVICE.CREATE_SERVICE过程设置该值。
模块名:开发人员在其应用程序代码中使用DBMS_ APPLICATION _INFO.SET _MODULE过程设置该值。使用该名称表示执行的模块或代码。
操作名:开发人员在其应用程序代码中使用DBMS_ APPLICATION _INFO.SET _ACTION过程设置该值。使用该名称表示模块执行的操作。
最后3个跟踪选项在层次上关联;不可以在没有指定模块名和服务名的情况下就指定操作名,但是可以只指定服务名,或者只指定服务名和模块名。
基于会话ID和序列号设置跟踪
为了基于会话ID和序列号设置跟踪,首先确定需要跟踪的会话的SID和序列号:
Select     sid,serial#,username
from       v$session;
SID       SERIAL# USERNAME
----------  ---------- ------------------------------
156          3588  SCOTT
142          1054 SYS
为了启用跟踪,可执行如下语句:
SQL> exec dbms_monitor.session_trace_enable(156,3588,TRUE,FALSE);
第三个参数用于等待(默认为TRUE),第四个参数用于绑定变量(默认为FALSE)。
为了关闭跟踪,可执行如下语句:
SQL> exec dbms_monitor.session_trace_disable(156,3588);
为了跟踪当前的会话,可设置SID和SERIAL#为空:
SQL> exec dbms_monitor.session_trace_enable(null,null);
基于客户端标识符设置跟踪
为了基于表示用户的客户端标识符设置跟踪,可运行如下语句:
SQL> exec dbms_session.set_identifier('bryan id');
为了验证客户端标识符,可执行如下语句:
select     sid,serial#,username, client_identifier
from        v$session
where      client_identifier is not null;
SID     SERIAL#  USERNAME                      CLIENT_IDENTIFIER
---------- ----------  ------------------------   ------------------
156         3588   SCOTT                         bryan id
现在就可以为这个客户端标识符设置跟踪:
SQL> exec dbms_monitor.client_id_trace_enable('bryan id',true,false);
第二个参数用于等待(默认为TRUE),第三个参数用于绑定变量(默认为FALSE)。
为了禁用这个客户端标识符跟踪,可执行如下语句:
SQL> exec dbms_monitor.client_id_trace_disable('bryan id');
设置服务名/模块名/操作名的跟踪
为了使用操作名,必须有对应的模块名和服务名。为了使用模块名,必须有服务名。对全局范围内针对某个数据库的服务名、模块名和操作名的给定组合启用跟踪,除非为过程指定了实例名。服务名由用于连接到服务的连接字符串确定。
Oracle 数据库表示为作为服务的客户端;也就是说,数据库代表客户端执行相应的操作。数据库可以有一个或多个与其关联的服务。例如,可以有一个数据库,该数据库带 有两个用于Web客户端的不同服务:用于购买书籍的客户端的book.us.acme.com,以及用于购买软件的客户端的 soft.us.acme.com。在该示例中,数据库名是sales.acme.com,因此服务名并不基于数据库名。服务名由初始参数文件中的 SERVICE_NAMES参数指定。服务名默认为由数据库名(DB_NAME参数)和域名(DB_DOMAIN参数)组成的全局数据库名。
为了启用服务名的跟踪,可执行如下语句:
SQL> exec dbms_monitor.serv_mod_act_trace_enable(service_name=>'ebk2');
这将跟踪服务名为ebk2的所有会话。
为了启用服务名、模块名和操作名组合的跟踪,可执行如下语句:
SQL> exec dbms_monitor.serv_mod_act_trace_enable(service_name=>'ebk2', module_name=>'salary_update', action_name=>'insert_item');
为了禁用前面代码中的跟踪,可使用过程SERV_MOD_ACT_TRACE_DISABLE,如下说是:
SQL> exec dbms_monitor.serv_mod_act_trace_disable(service_name=>'ebk2', module_name=>'salary_update', action_name=>'insert_item');
为了跟踪整个数据库或实例,可执行如下语句(不推荐这样操作):
execute DBMS_MONITOR.DATABASE_TRACE_ENABLE(waits => TRUE, binds => FALSE, instance_name => 'ebk1');
技巧:
使用DBMS_MONITOR时,请确保在完成操作时禁用跟踪;否则,将会跟踪满足指定条件的每个会话。

Statistic Gathering for Service, Module, and Action
The procedure SERV_MOD_ACT_STAT_ENABLE enables statistic gathering for a combination of service, module, and action. For example:
EXECUTE DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(service_name => 'ACCTG',        module_name => 'PAYROLL');
EXECUTE DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(service_name => 'ACCTG',
        module_name => 'GLEDGER', action_name => 'INSERT ITEM');
If both of the previous commands are executed, then statistics are gathered as follows:

  •     For the ACCTG service, because accumulation for each service name is the default
  •     For all actions in the PAYROLL module
  •     For the INSERT ITEM action within the GLEDGER module

The procedure SERV_MOD_ACT_STAT_DISABLE disables statistic gathering for a combination of service, module, and action. For example:
EXECUTE DBMS_MONITOR.SERV_MOD_ACT_STAT_DISABLE(service_name => 'ACCTG', module_name => 'GLEDGER', action_name => 'INSERT ITEM');
Regarding statistics gathering, when you change the module or action using these procedures, the change takes effect when the next user call is executed in the session. For example, if a module is set to module1 in a session, and if the module is reset to module2 in a user call in the session, then the module remains module1 during this user call. The module is changed to module2 in the next user call in the session.
启用跟踪视图
查看DBA_ENABLED_TRACES,DBA_ENABLED_AGGREGATIONS和V$SERV_MOD_ACT_STATS视图,可以看到启用的跟踪和收集的统计信息。可以使用这些视图确保已经禁用的所有跟踪选项。

 

参考至:http://blog.csdn.net/sopost/article/details/4710948
            http://docs.oracle.com/cd/E11882_01/server.112/e41573/sqltrace.htm#PFGRF94970

如有错误,欢迎指正

邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    性能调优分析之:Oracle SQL执行计划报告生成器

    Oracle SQL执行计划分析器功能的创建3步曲: 1 首先,编译XYG_ALD_SESS_PKG的Package头。 (XYG_ALD_SESS_PKG.sql) 2 接着要建立好下面的4个视图对象。因为XYG_ALD_SESS_PKG包体会用到。(View Create Script v...

    DB_monitor.rar

    10g: 注意大小写 CREATE DIRECTORY utl AS 'd:\temp'; GRANT EXECUTE ON UTL_FILE_DIR TO a; 生成字典文件(新建表后要刷新) EXECUTE dbms_logmnr_d.build(dictionary_filename => 'orcldict.ora', ...

    如何在Oracle数据库10g中跟踪SQL

    利用Oracle数据库10g,Oralce通过一个新的内置软件包 DBMS_MONITOR合理化了SQL的跟踪,这个软件包中包含以前无书面记载的跟踪工具(如DBMS_SUPPORT软件包)的功能。现在,您可以轻松地从头到尾--从客户机到中间层再...

    sqlmonitor

    sqlmonitor 1. 找出sid和serial# ... 例: D:\Oracle\product\10.1.0\admin\test10g\udump 6. 找最新的trace文件 7. 使用tkprof文件解析trace文件 例: tkprof sqltrace文件.trc a.out 8. 打开a.out

    Direct Oracle Access 4.1.2 Full Source for Delphi 2010

    w Encapsulation of standard Oracle packages (dbms_alert, dbms_job, utl_file, ...) w Many Oracle specific features supported w Compatible with SQL*Net 1 thru Oracle Net 9, and with Personal Oracle ...

    Oracle 10g SQL操作.zip

    DBMS_OUTPUT.PUT_LINE('这是第一个PL/SQL程序'); END; / 3.3.2 定义表的结构 例3.3_1 students表结构 CREATE TABLE students ( student_id NUMBER(5) CONSTRAINT student_pk PRIMARY KEY, monitor_id NUMBER(5)...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

     Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...

    最完整的Toad For Oracle使用手册

    Toad and Oracle Enterprise Manager 29 Quick Search Bar 30 Additional Resources 31 Working with other Quest Products 32 Knowledge Xpert 32 Using SQL Optimizer with Toad 32 Benchmark Factory 33 Quest ...

    ORACLE 配置邮件服务器操作示例

    本文实例讲述了ORACLE 配置邮件服务器操作。分享给大家供大家参考,具体如下: 在Oracle sql developer中执行 必须有Begin END 1 创建 ACL BEGIN dbms_network_acl_admin.create_acl(acl => 'email.xml', ...

    ora分析脚本

    'ash 30 10 -f foo.txt' to display a 10 minutes period from [now - 30min] and store the result in file foo.txt - ash_wait_graph <minutes_from_now> [duration] [-f <file_name>] PQ event wait graph ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

     Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. ...

    陈焕生:深入理解Oracle的并行执行(二)

     通过sqlmonitor报告判断sql的执行顺序,需要结合name列的tablequeue名字比如:TQ10000(代表DFO=1,tablequeue0),:TQ10001(代表DFO=1,tablequeue1),还有PX进程的颜色,进行确定。下面的例子为dbms_xplan。...

    PLSQL.Developer v11.0.0.1762 主程序+ v10中文包+keygen

    SQL Monitor detail tab page added (Oracle 11.2 and later) Queries in the can now be database version specific Object Browser enhancements The Object Browser has a new filter field where you can ...

    Toad 使用快速入门

    Toad 使用快速入门 目录 一.Toad功能综述 二....三....四....1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的...  要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug...

Global site tag (gtag.js) - Google Analytics