熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

如何設置OracleEvents以跟蹤數據庫

2013-11-13 15:36:56  來源: Oracle 

  Events事件是Oracle的重要診斷工具及問題解決辦法很多時候需要通過Events設置來屏蔽或者更改Oracle的行為;

  有四種類型的Events:

  Immediate dumps

  Conditional dumps

  Trace dumps

  Events that change database behaviour

  每一個事件都有一個號跟Oracle的錯誤信息是一樣的和ORA

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

  范圍

  位標 x x x x x

  標識 =off=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主要是在INITORA文件中做操作:

  event=event trace name context forever level level;

  (紅色部分:event指事件號level指定事件的級別)

  一次可以Enable多個事件可以用以下兩種方式:

    用一個冒號隔開

  event = trace name context forever level : trace name context forever level

    兩個Events分開寫

  event= trace name context forever level

  event= trace name context forever level #一些版本的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在其他的Session用ORADEBUG來Enable:

  在一個Process中實現Enable:

  ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER LEVEL level

  在某個進程中Enable:

  ORADEBUG SETORAPID (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_SYSTEMSETEV包來實現Enable和Disable

  (在做之前要先從V$session視圖中獲得SID和Serial#)

  用以下方式:EXECUTE DBMS_SYSTEMSET_EV(SIDSerial#eventlevel )

  如EXECUTE dbms_systemset_ev ();

  要Disable則將level改為如: EXECUTE dbms_systemset_ev ();

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

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

  SET SERVEROUTPUT ON

  DECLARE

  err_msg VARCHAR();

  BEGIN

  dbms_outputenable ();

  FOR err_num IN

  LOOP

  err_msg := SQLERRM (err_num);

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

  dbms_outputput_line (err_msg);

  END IF;

  END LOOP;

  END;

  /

  在UNIX系統下message文件在底下目錄$ORACLE_HOME/rdbms/mesg/orausmsg

  在NT系統下message文件在底下目錄$ORACLE_HOME/rdbms/mesg/orausmsg

  Listing Enabled Events(列出Enabled Events)

  用以下命令列出在當前Session已經Enabled Events:

  SET linesize

  SET feedback OFF

  SET SERVEROUTPUT ON

  DECLARE err_msg VARCHAR();

  BEGIN

  dbms_outputenable ();

  FOR err_num IN LOOP

  err_msg := SQLERRM (err_num);

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

  dbms_outputput_line (err_msg);

  END IF;

  END LOOP;

  END;

  /

  常用Events的參考:(紅色的為最常用的而且對DBA比較有用的Events)

  Event Monitor Transaction Recovery在Startup時跟蹤事務恢復

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Dump Undo Segment Headers在事務恢復後做Dump回退段頭信息

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Dump Sort StatisticsDump排序的統計信息level 是最詳細的

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Dump Sort Intermediate Run Statistics—level (不明白)

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Trace Free List Management Operations—跟蹤Freelist

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Enable SQL Statement Trace跟蹤SQL有執行計劃邦定變量和等待的統計信息level 最詳細

  ALTER SESSION SET EVENTS trace name context forever level ;

  級別level參考如下圖:

  Level      Action

       Print SQL statements execution plans and execution statistics

       As level plus bind variables

       As level plus wait statistics

     As level plus bind variables and wait statistics

  Event Dump Optimizer Decisions在分析SQL語句時Dump出優化器所做的選擇級別level 最詳細

  ALTER SESSION SET EVENTS trace name context forever level ;

  參考level:

  Level      Action

       Print statistics and computations

       Print computations only

  Event Dump Predicates(參考)

  Event Restrict Library Cache Dump Output for State Object Dumps(參考)

  Event Dump SQL*Net StatisticsDump SQL*NeT的統計信息

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Trace High Water Mark Changes—跟蹤HWM的改變

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Dump Hash Join Statistics—Dump HASH JOIN的統計信息用level

  ALTER SESSION SET EVENTS trace name context forever level ;

  Event Dump Partition Pruning Information—Dump分區表信息

  ALTER SESSION SET EVENTS trace name context forever level level;

  Level參考

  Level      Action

  x   Dump pruning descriptor for each partitioned object

  x   Dump partition iterators

  x   Dump optimizer decisions about partitionwise joins

  x   Dump ROWID range scan pruning information


From:http://tw.wingwit.com/Article/program/Oracle/201311/17007.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.