打印本文 打印本文 关闭窗口 关闭窗口
Oracle Events(个人参考资料)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2367  更新时间:2009/4/22 22:05:25  文章录入:mintao  责任编辑:mintao

Oracle Internal Events:

Introduction:(简介)

有四种类型的Events:

                Immediate dumps

               Conditional dumps

               Trace dumps

               Events that change database behaviour

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

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

              范围1到10

              位标 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"#一些版本的Oracle,event要一样的大小写

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在其他的Session用ORADEBUG来Enable:

 在一个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包来实现Enable和Disable

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

用以下方式: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的范围都在10000到10999.可以用以下命令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);

[1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口