`

如何设置Oracle Events以跟踪数据库

阅读更多

Events事件是Oracle的重要诊断工具及问题解决办法,很多时候需要通过Events设置来屏蔽或者更改Oracle的行为;

有四种类型的Events:

 

       Immediate dumps

 

       Conditional dumps

 

       Trace dumps

 

       Events that change database behaviour

 

每一个事件都有一个号跟Oracle的错误信息是一样的.10046ORA-10046

 

每一个事件都有一个Level,可以是以下:

 

       范围110

 

       位标 0x01 0x02 0x04 0x08 0x10

 

       标识 0=off,1=on

 

       ID 对象ID(object id),内存地址(memory address)

 

要注意的是,Events在每一个版本之间都有所改变.有一些存在的事件可能存在争议性或者已经不可用了,往往这些事件号会由新的事件所替代掉.也要注意在当前的版本中message file不一定可以反映出Events.

 

很多Events都会影响数据库的行为,一些测试Events极有可能导致数据库DOWN.所以,在没有Oracle Support的前提下,最好不要在PRO系统上做Events操作.DEV系统上如果要做Events最好先做个数据库的全备份.

 

Enabling Events(Enable事件)

 

Events可以在Instance一级Enabled,主要是在INIT.ORA文件中做操作:

 

       event='event trace name context forever, level level';

 

(红色部分:event指事件号.level指定事件的级别)

 

  一次可以Enable多个事件,可以用以下两种方式:

 

1.  用一个冒号隔开

 

     event = "10248 trace name context forever, level 10:10249 trace name context forever, level 10"

 

2.  两个Events分开写

 

    event="10248 trace name context forever, level 10"

 

    event="10249 trace name context forever, level 10"#一些版本的Oracleevent要一样的大小写

 

Events也可以在Instance一级用ALTER SYSTEM命令来Enable:

 

      ALTER SYSTEM SET EVENTS 'event trace name context forever, level level';

 

 在Instance一级用以下Disable

 

      ALTER SYSTEM SET EVENTS 'event trace name context off';

 

  Events也可以在Session一级用ALTER SESSION命令来Enable:

 

        ALTER SESSION SET EVENTS 'event trace name context forever, level level';

 

  Session一级用以下命令Disable:

 

ALTER SESSION SET EVENTS 'event trace name context off';

 

 Events在其他的SessionORADEBUGEnable:

 

 在一个Process中实现Enable:

 

       ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

 

 在某个进程中Enable:

 

        ORADEBUG SETORAPID 8(PID进程号)

 

       ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

 

 以下命令Disable:

 

  ORADEBUG EVENT event TRACE NAME CONTEXT OFF

 

Session中实现Enable:

 

  ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

 

Session中实现Disable:

 

  ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF

 

Events也可以用DBMS_SYSTEM.SETEV包来实现EnableDisable

 

    (在做之前要先从V$session视图中获得SIDSerial#)

 

用以下方式:EXECUTE DBMS_SYSTEM.SET_EV(SID,Serial#,event,level, '')

 

EXECUTE dbms_system.set_ev (9,29,10046,8,'');

 

  Disable则将level改为0,: EXECUTE dbms_system.set_ev (9,29,10046,0,'');

 

Listing All Events:(列出所有可用的Events)

 

大部分的Events number的范围都在1000010999.可以用以下命令Dump出所有的信息

 

SET SERVEROUTPUT ON

 

DECLARE

 

   err_msg VARCHAR2(120);

 

BEGIN

 

   dbms_output.enable (1000000);

 

   FOR err_num IN 10000..10999

 

   LOOP

 

    err_msg := SQLERRM (-err_num);

 

    IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN

 

      dbms_output.put_line (err_msg);

 

    END IF;

 

  END LOOP;

 

END;

 

/

 

UNIX系统下message文件在底下目录$ORACLE_HOME/rdbms/mesg/oraus.msg

 

NT系统下message文件在底下目录$ORACLE_HOME/rdbms/mesg/oraus.msg

 

Listing Enabled Events(列出Enabled Events)

 

  用以下命令列出在当前Session已经Enabled Events:

 

SET linesize 120
SET feedback OFF
SET SERVEROUTPUT ON
DECLARE err_msg VARCHAR2(120);
BEGIN
 dbms_output.
enable (1000000);
 
FOR err_num IN 10000..10999 LOOP
 err_msg :
= SQLERRM (-err_num);
 
IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN
    dbms_output.put_line
(err_msg);
  
END IF;
 
END LOOP;
END;

 

/

 

常用Events的参考:(红色的为最常用的而且对DBA比较有用的Events)

 

Event 10013 - Monitor Transaction Recovery------Startup时跟踪事务恢复

 

       ALTER SESSION SET EVENTS '10013 trace name context forever, level 1';

 

Event 10015 - Dump Undo Segment Headers----在事务恢复后做Dump回退段头信息

 

       ALTER SESSION SET EVENTS '10015 trace name context forever, level 1';

 

Event 10032 - Dump Sort Statistics----Dump排序的统计信息,level 10是最详细的

 

       ALTER SESSION SET EVENTS '10032 trace name context forever, level 10';

 

Event 10033 - Dump Sort Intermediate Run Statisticslevel 10(不明白)

 

       ALTER SESSION SET EVENTS '10033 trace name context forever, level 10';

 

Event 10045 - Trace Free List Management Operations—跟踪Freelist

 

       ALTER SESSION SET EVENTS '10045 trace name context forever, level 1';

 

Event 10046 - Enable SQL Statement Trace---跟踪SQL,有执行计划,邦定变量和等待的统计信息,level 12最详细

 

       ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

 

级别level参考如下图:

 

       Level      Action

 

1     Print SQL statements, execution plans and execution statistics

 

4     As level 1 plus bind variables

 

8     As level 1 plus wait statistics

 

12   As level 1 plus bind variables and wait statistics

 

 

 

Event 10053 - Dump Optimizer Decisions---在分析SQL语句时,Dump出优化器所做的选择,级别level 1最详细

 

       ALTER SESSION SET EVENTS '10053 trace name context forever, level 1';

 

参考level:

 

Level      Action

 

1     Print statistics and computations

 

2     Print computations only

 

Event 10060 - Dump Predicates---(参考http://www.juliandyke.com/)

 

Event 10065 - Restrict Library Cache Dump Output for State Object Dumps-(参考http://www.juliandyke.com/)

 

Event 10079 - Dump SQL*Net Statistics---Dump SQL*NeT的统计信息

 

       ALTER SESSION SET EVENTS '10079 trace name context forever, level 2';

 

Event 10081 - Trace High Water Mark Changes—跟踪HWM的改变

 

       ALTER SESSION SET EVENTS '10081 trace name context forever, level 1';

 

Event 10104 - Dump Hash Join StatisticsDump HASH JOIN的统计信息,level 10

 

       ALTER SESSION SET EVENTS '10104 trace name context forever, level 10';

 

Event 10128 - Dump Partition Pruning InformationDump分区表信息

 

       ALTER SESSION SET EVENTS '10128 trace name context forever, level level';

 

  Level参考

 

Level      Action

 

0x0001   Dump pruning descriptor for each partitioned object

 

0x0002   Dump partition iterators

 

0x0004   Dump optimizer decisions about partition-wise joins

 

0x0008   Dump ROWID range scan pruning information

 

 

source form http://rainnyzhong.bokee.com/5273335.html

分享到:
评论

相关推荐

    Oracle SQL语句跟踪

    Oracle SQL语句跟踪是数据库管理员和开发人员在优化SQL性能、定位问题或调试查询时常用的一种技术。在Oracle数据库系统中,SQL语句跟踪能够帮助我们收集关于SQL执行的详细信息,包括执行计划、资源消耗、等待事件等...

    Oracle 11g Events深入剖析

    Oracle 11g Events是数据库管理系统中的一个关键特性,用于监控、调试以及诊断系统运行时的行为。这些事件可以帮助数据库管理员和开发人员深入了解数据库操作,从而优化性能、排除故障并确保系统的稳定运行。本文将...

    Oracle跟踪事件

    Oracle 跟踪事件是 Oracle 数据库中的一种诊断工具,用于跟踪和分析数据库的内部结构和运行情况。该事件可以将 Oracle 各类内部结构中所包含的信息转储(dump)到跟踪文件中,以便用户能根据文件内容来解决各种故障。 ...

    oracle事件探查器

    1. **开启跟踪**:首先,我们需要以管理员权限登录到Oracle数据库,然后使用`ALTER SYSTEM SET events`语句开启想要追踪的事件。例如,如果我们想追踪SQL执行计划,可以使用`ALTER SYSTEM SET events '10046 trace ...

    oracle sql 跟踪

    Oracle SQL跟踪是数据库管理员和开发人员用来诊断性能问题、调试SQL语句以及优化数据库操作的强大工具。在Oracle数据库系统中,SQL跟踪可以帮助我们获取到应用程序与数据库交互时执行的SQL语句及其详细信息,包括...

    Oracle的重要诊断工具events_如10046事件来进行SQL跟踪

    Oracle提供了一系列命令用于将数据库内部结构中包含的信息转储到跟踪文件中,以便于用户根据文件内容解决各种故障。设置跟踪事件的主要方法有两种: 1. **在`init.ora`文件中设置事件**:这种方式会在打开数据库后...

    oracle事件跟踪器

    Oracle事件跟踪器,也被称为SQL Trace或10046事件,是Oracle数据库提供的一种强大的诊断工具,用于收集关于数据库操作的详细信息。这个功能对于性能优化、问题排查以及理解数据库内部工作流程至关重要。在Oracle环境...

    Oracle的重要诊断工具events_如10046事件来进行SQL跟踪.docx

    此外,用户还可以通过设置Oracle跟踪事件来生成这类文件,以获取更详细的诊断信息。用户跟踪文件保存在`USER_DUMP_DEST`参数指定的目录中,文件格式为`ora_xxxxx.trc`,其中`xxxxx`为创建文件的进程号或线程号。 ##...

    如何收集Oracle进程中SQL跟踪信息

    在Oracle数据库管理中,收集SQL跟踪信息是诊断和优化系统性能的关键步骤。SQL跟踪能够帮助我们深入了解查询执行的细节,找出潜在的性能瓶颈。本文主要介绍如何在不同情况下收集Oracle进程中的SQL跟踪信息。 首先,...

    Oracle数据库诊断事件详解-用于数据维护诊断使用.doc

    Oracle数据库中的**诊断事件**(Diagnosable Events)是一类特殊的机制,用于改变数据库的行为、启用收集跟踪或调试信息以及启用对数据库的额外错误检测。这些事件是数据库管理员进行故障排除、性能调优和维护时的重要...

    oracle跟踪工具

    3. **10046 事件**:这是Oracle的一个诊断事件,通过设置`ALTER SYSTEM SET events '10046 trace name context forever, level <n>'`,可以启动更高级别的跟踪,其中 `<n>` 可以是1至12,数字越大,跟踪信息越详细,...

    XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号).docx

    Oracle 数据库诊断事件是数据库管理员用来进行问题排查和性能优化的重要工具。这些事件允许改变数据库的行为,收集跟踪和调试信息,以及增强错误检测能力。在Oracle数据库中,诊断事件主要通过特定的事件号来触发,...

    Oracle 数据库11g初学者指南(英文版)

    - **环境变量设置**:正确设置环境变量对于确保Oracle数据库的正常运行至关重要。 #### 五、基本概念与操作 - **Schema**:每个数据库用户都有自己的schema,包含了表、视图等对象。 - **Tablespaces**:用来组织...

    win7win10oralce操作跟踪语句工具

    在Oracle数据库中,SQL跟踪是通过设置事件(events)来记录数据库执行的详细信息,包括SQL语句的执行计划、执行时间、资源消耗等。这对于诊断性能问题、定位错误以及优化SQL代码非常有帮助。这款工具就是针对这个...

    Oracle 数据库性能优化

    ### Oracle 数据库性能优化 #### 一、优化工具篇 **1.1 学习的建议** 对于希望深入了解Oracle数据库性能优化的专业人士来说,首先应该掌握Oracle的基本操作和原理,这是进行任何性能优化工作的基础。此外,建议...

    Oracle跟踪文件分析工具TKPROF使用简介[文].pdf

    Oracle的TKPROF工具是数据库管理员和开发人员用于分析跟踪文件的强大工具,它能帮助优化SQL语句,提高数据库性能。下面将详细介绍TKPROF的使用方法和关键配置。 首先,要启用TKPROF,需要设置一些参数。`TIMED_...

    oracle的10053事件

    Oracle的10053事件是Oracle数据库管理系统中的一种诊断工具,它允许DBA(数据库管理员)方便地转储数据库的各类结构并追踪特定事件。Oracle提供了多种诊断工具,但事件(Event)因其便捷性和实用性而备受青睐。下面...

    sql跟踪工具

    SQL跟踪工具是数据库管理员和开发人员在Oracle数据库环境中进行性能优化和问题排查的重要辅助手段。这类工具能够记录和分析SQL语句的执行过程,提供详细的信息,帮助我们理解数据库操作的内部工作原理,从而找出可能...

    oracle恢复

    在数据库open过程中,可以通过设置跟踪事件(trace event)来获取更详细的信息,这对于诊断问题和进行非常规恢复很有帮助。例如: - 使用`alter session set events '10046 trace name context forever, level 12';...

Global site tag (gtag.js) - Google Analytics