Oracle events



我感到难过,不是因为你欺骗了我,而是因为我再也不能相信你了。------尼采



在oracle 7及oracle 8时期,oracle内部可以通过原始代码进行问题的追源。随着oracle内部保密工作的愈发严密,现了解oracle内核的渠道越来越少。

oracle代码按照以下规则进行分层,dba可以通过报错函数,确定基本错误发生层级:


-kt       kernel transaction

-kd      kernel data

-kc      kernel cache

-ks      kernel services

Fixed(X$) tables are defined using macros defined in rdbms/src/hdir/kqf.h

Dynamic(v$) views are all defined in rdbms/src/hdir/kqfv.h


一、event诊断方法

event事件是基本的重要诊断工具及问题解决办法,很多时候需要通过设置来屏蔽或者更改的行为。

事件详细记载文件:$ORACLE_HOME/rdbms/mesg/oraus.msg

事件诊断方法:

 1,通过设置参数文件事件形式:

       event="<event name> <action> [:<event name> <action>]......"

 2,通过sql语句进行设置当前sql会话:

       alter session set events '<event name><action> [:<event name> <action>]......"

 3,通过sql语句设置所有新会话:

       alter system set events '<event name><action> [:<event name> <action>]......"

 4,sys.dbms_system.set_ev

 5,oradebug

例子:

      event = "604 trace name errorstack"

      alter session set events '604 trace name errorstack'

      alter system set events '604 trace name errorstack'

      sys.dbms_system.set_ev(sid,serial#,<event>,<level>,'<action>')

      sys.dbms_system.set_ev(8,219,10046,12,'')

      oradebug dump processstate 10

      oradebug setospid 20515

      oradebug unlimit

      oradebug dump processstate 10


二、event分类      

event中<action>关键字,有三种情况

      "crash" causes an Oracle crash for testing recovery

      "debugger" invokes a system debugger if any

      "trace" is context specific or named context-independent ones

      event = "10015 trace name context forever"

      event = "10046 trace name context forever, level 4"

      event = "10015 trace name context forever: 10046 trace name context forever, level 4"


在参数文件中event事件必须连续写,分开写将导致前面的event不生效

      正确:      

      event = "10015 trace name context forever"

      event = "10046 trace name context forever, level 4"

      错误:

      event = "10015 trace name context forever"

      db_name = ORACLE

      db_files = 20

      event = "10046 trace name context forever, level 4"


四种event分类

      第一类:immdiate dump

      文件头(controlf,redohdr,file_hdrs)

      系统状态(systemstate)

      进程状态(processtate)

      alter session set events 'immediate trace name <dump> level <level>',该dump不能写在参数文件中

      alter session set events 'immediate trace name controlf level 10'

      oradebug setospid 4081

      oradebug dump controlf 10

      exec sys.dbms_system.set_ev(7,10,65535,10,'controlf')

      立即dump的包括:file_hdrs,redohdr,processstate,systemstate


      第二类:on-error dump

      alter session set events '<error> trace name errorstack level <level>'

      oradebug session_event <error> trace name errorstack level <level>

      oradebug event <error> trace name errorstack level <level>

      alter session set events '60 trace name errorstack level 1';

     

      oradebug setospid 4018

      oradebug unlimit

      oradebug dump errorstack 1

      level级别:

      0    error stack only

      1    error stack and function call stack(if implemented)

      2    as 1 plus the process state

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


      第三类:change behavior

      event =  "<event> trace name context forever,level <level>"

      改变行为的event一般放在参数文件中

      event = "10269 trace name context forever,level 10"


      第四类:trace events:用来生成诊断日志信息

      event =  "<event> trace name context forever,level <level>"

      alter session set events '<event> trace name context forever,level <level>';

      alter system set events '<event> trace name context forever,level <level>';


喜欢的朋友可以扫描以下二维码进行关注,公众号将每天更新文章:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值