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

dump oracle events开始篇“event定义”

浏览:2527次  出处信息

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

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

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

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

“oracle的library cache是什么个样子?”

……

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

“你dump一下这个块吧!”

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

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

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

……

    等等如上问题,其实都只是需要dump某个oracle的event的问题。dump是一个动词,它代表一种操作,说的简单一点,拿内存举例,就是原封不动的把某一片内存给展现出来;拿跟踪举例,就是它原始的展示了oracle处理某个问题的过程等等。很显然,各位这里就有几个关键问题出现了。第一当然就是event,它是什么样子的?一共有哪些event?知道了这些event过后,那么第二我们就会问,如果来dump这些oracle的event?再之后就是,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。

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

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

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

英文的表达是这样的: 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”,你可以理解成它是一种特殊的,顾名思义,他是dump“内容”。

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

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

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

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

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

event_name CRASH    ....

event_name DEBUGGER ....

event_name TRACE    NAME trace_name|CONTEXT  [ FOREVER|OFF|LEVEL ]

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

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

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

 

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

未完待续……

请看下篇:dump oracle events中间篇“event的分类与dump”

建议继续学习:

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

京ICP备15002552号-1