dump oracle events开始篇“event定义”

我们经常会发现某些人会问如下面的这些问题:

“这个oracle 块里面到底是怎么存这些数据的?”

“死锁发生的时候,我怎么知道是哪几个对象发生的死锁?”

oracle 是怎么执行这个操作的?”

oraclelibrary cache 是什么个样子?”

……

这个时候,可能就有人会如下的回答这样的问题:

“你dump 一下这个块吧!”

“你可以设置60 事件跟踪一下吧。”

“你做一个10046 事件跟踪一下吧。”

“你可以dump 一下内存的library cache 啊。”

……

    等等如上问题,其实都只是需要dump 某个oracleevent 的问题。dump 是一个动词,它代表一种操作,说的简单一点,拿内存举例,就是原封不动的把某一片内存给展现出来;拿跟踪举例,就是它原始的展示了oracle 处理某个问题的过程等等。很显然,各位这里就有几个关键问题出现了。第一当然就是event ,它是什么样子的?一共有哪些event ?知道了这些event 过后,那么第二我们就会问,如果来dump 这些oracleevent ?再之后就是,dump 出来的东西以后,我们怎么来看懂这些东西?或者说这些东西是什么个含义?本文会回答第一和第二个问题,至于第三个问题,各位看官需要进程研究metalink ,相信会有不少收获的。

    首先,我们就来说说event ,它是什么样子的?

 

   event 的定义

    event 的定义很简单,可以简单的如下面这个图表示:

event = event_name + action 。这里分别来解释一下它的两个组成要素。

首先,这里的event name 是一个event 的名字或者是event 的代码。如果event name 不是“immediate ”,那么oracle 解析器会在event name table 中找到这个event 。关于immediate event ,它是一个特殊的event ,它显示一个立即的无条件的event ,它不会等待其他人去提交它而立即执行。

其次,这里的action 是什么样子呢?如下:

也就是说action 是由一个action keyword 和一个或者多个qualifier (值)组成。于是,我也需要来解释一下这两个部分。

这里的action keyword 是如下三个值:

crash :它会引起一个oracle crash ,一般是为了测试recovery 的时候才用它。

debugger :调用一个系统的debugger 。(invokes a system debugger if any

trace is context specific or named context-independent ones

因此,我们不打算讨论crashdebugger 的情况,这两个值一般是oracle 的核心开发人员使用。我们这里只讨论trace 的情况。

action keyword 是“trace ”的时候,这里的qulifier 的可如下指定:

这里有必要解释一下<trace_name> ,它就是你需要dump 的“某个对象”的“trace id ”,或者就是你想要做的“某种trace ”。如你想dump 内存中的library cache , 就是想看看内存中library cachetrace ,那么这里的<trace name> 就是“library_cache ”。

英文的表达是这样的:<trace name > is a symbolic name associated with an internal trace id that is used to associate a trace with a (context-independent) debug dump operation

这里的“context ”,你可以理解成它是一种特殊的<trace name> ,顾名思义,他是dump “内容”。

这里的3trace qualifiers 含义分别是:

forever ”:表示这个trace 一旦设定,每当这个event 发生的时候,就激活这个trace

off ”:表示对这个event 关闭这个trace

level <n> ”:当event 发生的时候,你想要trace 的级别,每个trace 的级别的取值是都是不一样的,它一个非负整数。通常情况下,它的值越大,就会有更多的内容显示,但是如果你是做某个块的dump ,这里的level 就是data block addressdba )。

综上所述,event 可大概的如下表示为:

event_name CRASH    ....

event_name DEBUGGER ....

event_name TRACE    NAME trace_name|CONTEXT  [ FOREVER|OFF|LEVEL <n> ]

这个里面“| ”表示“或者”,“[] ”表示出现一次或者多次。

    上面已经清楚的介绍了event 的结构,回答了event 是什么?它是什么样子?的问题。

那么在oracle 中一共有哪些event 呢?oracle 中的event 有很多个,具体有哪些,在unix 或者类unix 系统中,可在文件“$ORACLE_HOME/rdbms/mesg/oraus.msg ”中查看。在大体上面,event 可以分为四类,,并且如何来设置这四类event 呢? 下面就来说说这个问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值