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

 

   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 (如controlfredohdrfile_hdrs ),系统状态的dumpsystemstate ),进程的状态的dumpprocesstate )。

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

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

2. oradebug dump <dump> <level>;

3. sys.dbms_system.set_ev(sid,serial#,65535,<level>,’<dump>’);

这里的<dump> 实际上就是某种<trace_name>

举例如下:

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

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

    常见的一种on-error dumpdump 出出错时候的进程的调用栈,trace nameerrorstack 。下面我就对这种常见的on-error dumplevel 说明一下:

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 = “<erro> trace name errorstack level <level>”;

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

3. 在绑定一个进程以后,oradebug session_event <error> trace name errorstack level <level> ,这个命令对运行这个绑定的进程的session 设置了这个event ;而oradebug event <error> trace name errorstack level <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 = “<event> trace name context forever,level <level>”;

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

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

 

trace events dumps

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

1. event = “<event> trace name context forever,level <level>”

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

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

 

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

uses of diagnostic dumps and events

event name

trace name

immediate dump

IMMEDIATE

<dump>

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值