IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

ilonng 2009-10-12 10:07:09 累计浏览 4,344 次
本机暂存

   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. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Oracle MTS模式下 进程地址与会话信息 (累计阅读 14,406)
  2. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼 (累计阅读 6,878)
  3. 性能测试工具sysbench简介 (累计阅读 6,026)
  4. 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例 (累计阅读 5,861)
  5. 仅仅只备份是不够的 (累计阅读 5,823)
  6. Oracle Database 12c 新特性 - Native Top N 查询 (累计阅读 5,749)
  7. ORACLE最大可以存储多少数据量 (累计阅读 5,726)
  8. Oracle DBA的学习进阶成长树-从初出茅庐到高瞻远瞩 (累计阅读 5,600)
  9. 老托的Oracle 数据库Patch概念性小常识 (累计阅读 5,546)
  10. 查看oracle数据库用户下的所有空表 (累计阅读 5,502)