设为首页 收藏本站
查看: 728|回复: 0

[经验分享] 如何设置Oracle Events以跟踪数据库

[复制链接]
YunVN网友  发表于 2016-8-15 06:22:06 |阅读模式
  Events事件是Oracle的重要诊断工具及问题解决办法,很多时候需要通过Events设置来屏蔽或者更改Oracle的行为;
有四种类型的Events:

  
       Immediate dumps

  
       Conditional dumps

  
       Trace dumps

  
       Events that change database behaviour

  
每一个事件都有一个号跟Oracle的错误信息是一样的.10046ORA-10046

  
每一个事件都有一个Level,可以是以下:

  
       范围110

  
       位标 0x01 0x02 0x04 0x08 0x10

  
       标识 0=off,1=on

  
       ID 对象ID(object id),内存地址(memory address)

  
要注意的是,Events在每一个版本之间都有所改变.有一些存在的事件可能存在争议性或者已经不可用了,往往这些事件号会由新的事件所替代掉.也要注意在当前的版本中message file不一定可以反映出Events.

  
很多Events都会影响数据库的行为,一些测试Events极有可能导致数据库DOWN.所以,在没有Oracle Support的前提下,最好不要在PRO系统上做Events操作.DEV系统上如果要做Events最好先做个数据库的全备份.

  
Enabling Events(Enable事件)

  
Events可以在Instance一级Enabled,主要是在INIT.ORA文件中做操作:

  
       event='event trace name context forever, level level';

  
(红色部分:event指事件号.level指定事件的级别)

  
  一次可以Enable多个事件,可以用以下两种方式:

  
1.  用一个冒号隔开

  
     event = "10248 trace name context forever, level 10:10249 trace name context forever, level 10"

  
2.  两个Events分开写

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

  
    event="10249 trace name context forever, level 10"#一些版本的Oracleevent要一样的大小写

  
Events也可以在Instance一级用ALTER SYSTEM命令来Enable:

  
      ALTER SYSTEM SET EVENTS 'event trace name context forever, level level';

  
 在Instance一级用以下Disable

  
      ALTER SYSTEM SET EVENTS 'event trace name context off';

  
  Events也可以在Session一级用ALTER SESSION命令来Enable:

  
        ALTER SESSION SET EVENTS 'event trace name context forever, level level';

  
  Session一级用以下命令Disable:

  
ALTER SESSION SET EVENTS 'event trace name context off';

  
 Events在其他的SessionORADEBUGEnable:

  
 在一个Process中实现Enable:

  
       ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

  
 在某个进程中Enable:

  
        ORADEBUG SETORAPID 8(PID进程号)

  
       ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

  
 以下命令Disable:

  
  ORADEBUG EVENT event TRACE NAME CONTEXT OFF

  
Session中实现Enable:

  
  ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

  
Session中实现Disable:

  
  ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF

  
Events也可以用DBMS_SYSTEM.SETEV包来实现EnableDisable

  
    (在做之前要先从V$session视图中获得SIDSerial#)

  
用以下方式:EXECUTE DBMS_SYSTEM.SET_EV(SID,Serial#,event,level, '')

  
EXECUTE dbms_system.set_ev (9,29,10046,8,'');

  
  Disable则将level改为0,: EXECUTE dbms_system.set_ev (9,29,10046,0,'');

  
Listing All Events:(列出所有可用的Events)

  
大部分的Events number的范围都在1000010999.可以用以下命令Dump出所有的信息

  
SET SERVEROUTPUT ON

  
DECLARE

  
   err_msg VARCHAR2(120);

  
BEGIN

  
   dbms_output.enable (1000000);

  
   FOR err_num IN 10000..10999

  
   LOOP

  
    err_msg := SQLERRM (-err_num);

  
    IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN

  
      dbms_output.put_line (err_msg);

  
    END IF;

  
  END LOOP;

  
END;

  
/

  
UNIX系统下message文件在底下目录$ORACLE_HOME/rdbms/mesg/oraus.msg

  
NT系统下message文件在底下目录$ORACLE_HOME/rdbms/mesg/oraus.msg

  
Listing Enabled Events(列出Enabled Events)

  
  用以下命令列出在当前Session已经Enabled Events:

  
SET linesize 120
SET feedback OFF
SET SERVEROUTPUT ON
DECLARE err_msg VARCHAR2(120);
BEGIN
 dbms_output.
enable (1000000);
 
FOR err_num IN 10000..10999 LOOP
 err_msg :
= SQLERRM (-err_num);
 
IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN
    dbms_output.put_line
(err_msg);
  
END IF;
 
END LOOP;
END;

  
/

  
常用Events的参考:(红色的为最常用的而且对DBA比较有用的Events)

  
Event 10013 - Monitor Transaction Recovery------Startup时跟踪事务恢复

  
       ALTER SESSION SET EVENTS '10013 trace name context forever, level 1';

  
Event 10015 - Dump Undo Segment Headers----在事务恢复后做Dump回退段头信息

  
       ALTER SESSION SET EVENTS '10015 trace name context forever, level 1';

  
Event 10032 - Dump Sort Statistics----Dump排序的统计信息,level 10是最详细的

  
       ALTER SESSION SET EVENTS '10032 trace name context forever, level 10';

  
Event 10033 - Dump Sort Intermediate Run Statisticslevel 10(不明白)

  
       ALTER SESSION SET EVENTS '10033 trace name context forever, level 10';

  
Event 10045 - Trace Free List Management Operations—跟踪Freelist

  
       ALTER SESSION SET EVENTS '10045 trace name context forever, level 1';

  
Event 10046 - Enable SQL Statement Trace---跟踪SQL,有执行计划,邦定变量和等待的统计信息,level 12最详细

  
       ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

  
级别level参考如下图:

  
       Level      Action

  
1     Print SQL statements, execution plans and execution statistics

  
4     As level 1 plus bind variables

  
8     As level 1 plus wait statistics

  
12   As level 1 plus bind variables and wait statistics

  
 

  
Event 10053 - Dump Optimizer Decisions---在分析SQL语句时,Dump出优化器所做的选择,级别level 1最详细

  
       ALTER SESSION SET EVENTS '10053 trace name context forever, level 1';

  
参考level:

  
Level      Action

  
1     Print statistics and computations

  
2     Print computations only

  
Event 10060 - Dump Predicates---(参考http://www.juliandyke.com/)

  
Event 10065 - Restrict Library Cache Dump Output for State Object Dumps-(参考http://www.juliandyke.com/)

  
Event 10079 - Dump SQL*Net Statistics---Dump SQL*NeT的统计信息

  
       ALTER SESSION SET EVENTS '10079 trace name context forever, level 2';

  
Event 10081 - Trace High Water Mark Changes—跟踪HWM的改变

  
       ALTER SESSION SET EVENTS '10081 trace name context forever, level 1';

  
Event 10104 - Dump Hash Join StatisticsDump HASH JOIN的统计信息,level 10

  
       ALTER SESSION SET EVENTS '10104 trace name context forever, level 10';

  
Event 10128 - Dump Partition Pruning InformationDump分区表信息

  
       ALTER SESSION SET EVENTS '10128 trace name context forever, level level';

  
  Level参考

  
Level      Action

  
0x0001   Dump pruning descriptor for each partitioned object

  
0x0002   Dump partition iterators

  
0x0004   Dump optimizer decisions about partition-wise joins

  
0x0008   Dump ROWID range scan pruning information

  
  
  source form http://rainnyzhong.bokee.com/5273335.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257699-1-1.html 上篇帖子: 配置UltraEdit为Oracle PL/SQL代码编辑器 下篇帖子: ORACLE常用傻瓜問題1000問(之三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表