Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2774373
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2010-08-17 17:00:47

                                  oracle诊断事件
 
    ORACEL诊数事件是一很重要的工具和手段,整理了一些关于这方面的认识,希望对大家有帮助,如下:
一,ORACLE的事件可以分为诊断事件和等待事件,等待事件用来调整性能的,诊断事件用来对数据进行诊断或是改变ORACLE行为
二,诊断事件一般可以用来转储ORACLE某些数据结构,跟踪ORACLE行为,改变ORACLR的行为或是在进程出错是生成errorstatck信息;
三,诊断事件的语法:<事件号或错误号或immediate><操作><内容><等级>,如:10046 trace name context forever,level 4
四,诊断事件的四种操作方式:1,在参数文件中设置  event="10046 trace name context forever,level 4"
                                          event="10053 trace name context forever,level 4"
或者event="10046 trace name context forever,level 4:10053 trace name context forever,level 4"
event是参数文件中唯一可以设置多个值的参数,在两个event之间不能有其他的参数,否则前面设置的event全部无效,参数文件中的event不能设置转储数据结构事件
2,在sqlplus中使用alter system/session set event "事件",会在生user_deump_dest生成dump文件,但是这种方式不能跟踪别人的会话.
3,使用oradebug 命令,个人也比较喜欢这个工具,可以很方便跟踪别人会话,如:oradebug setmypid,oradebug event 10053 trace name context forever,level 4
4,使用dbms_system.set_env过程,如exec dbms_system.set_env(sid,serial#,10046,4,'')
五,列出所有可用的事件,一般都是在10000-10999.PL/SQL代码如下
declare
err varchar2(120);
begin
dbms_output.enable(100000);    //把dbms output的buffer设得很大,要不然输不完,会报错,default为2000
for i in 10000..10999
loop
err:=sqlerrm(-i);
dbms_output.put_line(err);
end loop;
end;
/
阅读(2167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~