技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Oracle --> dump oracle events中间篇“event的分类与dump”

dump oracle events中间篇“event的分类与dump”

浏览:2983次  出处信息

   event的分类dump

oracle中的event根据它们的用途,可以分为如下四类,分别是:

1. immediate dump

2. on-error dump

3. change behavior

4. trace

    这四类event,分别对应下面四种不同的用途:

1. dump diagnostic information on request

2. dump diagnostic information when an error occurs

3. change database behavior

4. produce trace diagnostics as the database runs

    那么,如何设置这四类event呢?或者说如果dump这四类event呢?可以有四种方法来dump:

1、  在parameter file中使用event initialization parameter

2、  alter session|system set events

3、  sys.dbms_system.set_ev()

4、  oradebug

下面来分别解释一下这四类event。

    immediate dumps

    这类event都是根据要求随时dump相应的内容到一个trace file中。常见的immediate dumps包括有:文件头部的dump(如controlf,redohdr,file_hdrs),系统状态的dump(systemstate),进程的状态的dump(processtate)。

这类dump,很显然不能在parameter file中使用event initialization parameter。其他三种方法都可以使用,其中alter session最常用:

1. alter session set events ‘immediate trace name level ’;

2. oradebug dump ;

3. sys.dbms_system.set_ev(sid,serial#,65535,,’’);

这里的实际上就是某种

举例如下:

1. alter session set events ‘immediate trace name controlf level 10’;

2. execute sys.dbms_system.set_ev(7,10,65535,10,’controlf’);

3. oradebug setospid 4081;

oradebug dump controlf 10;

   

on-error dumps

    这类dump和immdiate dumps很类似,只不过它发生的时间是前面的错误event发生的时候。event name就是oracle的ORA-nnn错误代码,如死锁的错误代码是ORA-00060

    常见的一种on-error dump是dump出出错时候的进程的调用栈,trace name是errorstack。下面我就对这种常见的on-error dump的level说明一下:

level description

0                  error stack only

1     error stack and function call stack (if implemented)

2     as 1 plus process state

3     as 2 plus the context area (all cursors and current cursor highlighted).

    这类event该如何dump能,它可以使用下面的三种方法:

1. 在parameter file中设置event = “ trace name errorstack level ”;

2. alter session set events ‘ trace name errorstack level ’;

3. 在绑定一个进程以后,oradebug session_event trace name errorstack level ,这个命令对运行这个绑定的进程的session设置了这个event;而oradebug event trace name errorstack level ,这个命令是对当前绑定这个进程的session以及之后在进程上运行的session设置了这个session,因此这个命令在shared server模式中很有作用。

    举例如下:

    如当死锁发生的时候,dump出的调用栈信息的event是:

1. 在parameter file中设置event = “60 trace name errorstack level 1”;这样每当死锁发生的时候,它的相关信息就被dump到相应的trace file中。

2. alter session set events ‘60 trace name errorstack level 1’;

3. > oradebug setospid 4018;

   > oradebug unlimit;

   > oradebug dump errorstack 1;

 

change behavior dumps

    当这类事件发生的时候,你可以通过dump做如下的操作:

1.     change the oracle server’s behavior

2.     enable hidden features

3.     work around problems

4.     perform specialized tuning

这类事件的dump设置一般都是在parameter file中设置:

event = “ trace name context forever,level ”;

如阻止SMON合并空闲空间事件如下设置:

event = “10269 trace name context forever,level 10”。

 

trace events dumps

这类event的dump,就是dump出event的trace内容,方便解决与跟踪问题。这类event的常用的dump设置方法是在parameter file中或者使用alter session:

1. event = “ trace name context forever,level

2. alter session|system set events ‘ trace name context forever,level ’;

如alter session set events ‘10046 trace name context forever,level 12’;

 

    下面对各类event的dump设置语法做一个总结,如下表:

uses of diagnostic dumps and events

event name

trace name

immediate dump

IMMEDIATE

on-error dump

error#

ERRORSTACK

change behavior

event#

CONTEXT

trace

event#

CONTEXT

 

    这里需要注意的一点是,不要给这个表格的表象所蒙蔽,如on-error dump的trace name就只能是ERRORSTACK,它只是大多数的情况下是这个trace name(大部分的情况下,我们把一种trace name称为一种dump),实际上on-error dump也可以和其他的dump相联系在一起,如event = \'60 trace name processstate level 10\',这个就是说在60错误事件(即死锁)发生的时候,以级别10去dump这个process的state。因此event=\'event_name TRACE NAME dump_name,level\'是说明当某个event发生的时候,以级别level去dump某个trace name(即某种dump)。这点是一定要注意的。

    oracle是如何处理各种event的呢?或者说是按照什么顺利来处理那麽多的设置的event呢?请看下图:

此图反应了oracle的执行event的内部顺序,从途中可以看到先执行session event,后执行process event。那么什么是session event,什么又是process event呢?

Pocess events are initialized at process startup with the “event” initialization parameter.即在parameter file中设置的那些event。

Session events are modified dynamically with an ALTER SESSION or ALTER SYSTEM command.即使用alter session 或者alter system设置的那些event。

 

 

----------------------------------

未完待续……

请看前篇:dump oracle events开始篇“event定义”

建议继续学习:

  1. Java heap dump触发和分析    (阅读:6347)
  2. dump oracle events开始篇“event定义”    (阅读:2530)
  3. 从dump文件中抽取部分库表    (阅读:2326)
  4. dump oracle events过渡篇“events知多少”    (阅读:2044)
  5. Android安全–一次简单的脱壳Dump dex实践    (阅读:1622)
  6. oracle跟踪事件(dump)总结    (阅读:1383)
  7. core dump磁盘报警问题排查过程    (阅读:1037)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1