10-19 生成会话的10046跟踪事件

问题:
    你想要生成一个会话的Oracle 10046跟踪事件。

方法:
    你可以获取一个Oracle 10046 跟踪事件,也称为扩展跟踪,按下面步骤产生:
       1、设置跟踪文件标识符。
        SQL>alter session set  tracefile_identifier = '10046';
       2、执行下面语句开始跟踪。
        SQL>alter session set events '10046 trace name context forever, level 12';
       3、执行你想跟踪的SQL语句。
        SQL>select sum(amount_sold) from sales;
        4、用以下命令关闭跟踪。
         SQL>alter session set events '10046 trace name context off';
    你可以在diagnostic_dest参数指定的跟踪目录($DIAG_HOME/rdbms/db/inst/trace)下找到跟踪转储文件。你就可以使用tkprof应用或者其他Oracle 跟踪分析程序分析这个跟踪文件。

工作原理:
    下面是设置一个10046跟踪事件语法中各种关键字的含义:
        set events:设置一个指定的Oracle事件,比如,10046 事件。
        10046:动作发生的指定时间。
         trace:当事件(10046)发生,数据库必须采取该动作。
         name:指示转储或跟踪类型。
         context:指定oracle应该产生一个特定的上下文跟踪;如果使用errorstact替换context,数据库不会跟踪该SQL语句。当遇到10046事件时,会转储错误栈信息。
         forever:指定关键字forever是告诉数据库每次事件(10046)发生时都要涉及该动作(跟踪)。如果你忽略关键字forever,那这个动作值执行一次,接下来事件就会自动关闭。
         level 12:指定跟踪级别,本例中,它还捕获Bind和wait信息。
    Oracle 10046 事件已经存在很多年,这个方法跟使用dbms_monitor包的session_trace_enable过程生成的跟踪是一样的:
SQL>execute dbms_monitor.session_trace_enable(session_id=>99,serial_num=>88,waits=>true,binds=>true);
    10046 事件和dbms_monitor.session_trace_enable过程都生成相同的跟踪信息,称为扩展跟踪是因为跟踪包含等待(wait)和绑定(bind)变量数据。
    如果你不使用Oracle数据库11g中介绍的新诊断基础工具(ADR),确保设置转储文件大小值为unlimited,因为10046跟踪事件经常生成很大的文件,如果跟踪转储目录没有足够空间,数据库会清空转储文件。
    为10046跟踪事件指定的跟踪级别决定了生成哪种类型的跟踪信息。默认级别为1,只收集基本的信息。级别4允许你捕获绑定变量值,它们以:bi,:b2等显示。你也可以查看Oracle替代每个绑定变量的实际值。级别8提供级别1所有的信息,还有SQL查询执行过程中所有等待事件的情况。12级跟踪是4级跟踪和8级跟踪的组合,意味着包括所有绑定变量和等待信息。级别16是Oracle数据库11g的新特性,提供每个查询执行的STAT线转储。这与使用dbms_monitor.session_trace_enable过程时设置plan_level参数为all_executions一样。

提示:如果在禁止跟踪前,会话没有干净地关闭,跟踪文件中不会包含重要的跟踪信息。

        同时获取 10046 跟踪事件和分析它提供的 有关使用情况绑定变量使用情况和等待事件的有用信息,跟踪会话时,您需要小心。如果整个实例性能有问题, 由于运行跟踪增加开销,你的跟踪可能会使实例性能更糟。此外,它需要时间才能完成,通过 TKPROF 或其他一些分析程序,报告中会有许多 SQL 语句。下面是一个曾经用于我自己工作中的一般策略:
      如果您正在诊断一般性能问题,好的开始就是获取一份 AWR报告,最好每隔1-15分钟取几个快照。通常,您可以通过审查 AWR 报告识别出问题。这份报告会突出显示影响性能的效率低的 SQL 语句,各种类型的竞争,内存问题、闩 和全表扫描。你可以获得所有这些信息,而无需运行 10046 跟踪。
     当用户报告了一个问题,您通过 AWR报告不能确定问题时,运行10046跟踪如果您已经清楚地确定一个性能欠佳的进程,您可以跟踪相关会话。您还可以在开发环境中, 运行此跟踪帮助开发人员了解查询执行详细信息并优化其查询。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27795363/viewspace-745226/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27795363/viewspace-745226/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值