時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
Events事件是Oracle的重要診斷工具及問題解決辦法,很多時候需要通過Events設置來屏蔽或者更改Oracle的行為;
有四種類型的Events:
Immediate dumps
Conditional dumps
Trace dumps
Events that change database behaviour
每一個事件都有一個號跟Oracle的錯誤信息是一樣的.如10046和ORA-10046
每一個事件都有一個Level,可以是以下:
范圍1到10
位標 0x01 0x02 0x04 0x08 0x10
標識 0=off,1=on
ID號 對象ID(object id),內(nèi)存地址(memory address)
要注意的是,Events在每一個版本之間都有所改變.有一些存在的事件可能存在爭議性或者已經(jīng)不可用了,往往這些事件號會由新的事件所替代掉.也要注意在當前的版本中message file不一定可以反映出Events.
很多Events都會影響數(shù)據(jù)庫的行為,一些測試Events極有可能導致數(shù)據(jù)庫DOWN掉.所以,在沒有Oracle Support的前提下,最好不要在PRO系統(tǒng)上做Events操作.DEV系統(tǒng)上如果要做Events最好先做個數(shù)據(jù)庫的全備份.
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"#一些版本的Oracle,event要一樣的大小寫
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中實現(xiàn)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中實現(xiàn)Enable:
ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level
在Session中實現(xiàn)Disable:
ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF
Events也可以用DBMS_SYSTEM.SETEV包來實現(xiàn)Enable和Disable
(在做之前要先從V$session視圖中獲得SID和Serial#)
用以下方式: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的范圍都在10000到10999.可以用以下命令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;
/
#p#副標題#e#
在UNIX系統(tǒng)下message文件在底下目錄$ORACLE_HOME/rdbms/mesg/oraus.msg
在NT系統(tǒng)下message文件在底下目錄$ORACLE_HOME/rdbms/mesg/oraus.msg
Listing Enabled Events(列出Enabled Events)
用以下命令列出在當前Session已經(jīng)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排序的統(tǒng)計信息,level 10是最詳細的
ALTER SESSION SET EVENTS '10032 trace name context forever, level 10';
Event 10033 - Dump Sort Intermediate Run Statistics—level 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,有執(zhí)行計劃,邦定變量和等待的統(tǒng)計信息,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出優(yōu)化器所做的選擇,級別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的統(tǒng)計信息
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 Statistics—Dump HASH JOIN的統(tǒng)計信息,用level 10
ALTER SESSION SET EVENTS '10104 trace name context forever, level 10';
Event 10128 - Dump Partition Pruning Information—Dump分區(qū)表信息
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
關鍵詞標簽:Oracle Events
相關閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法