診斷事件(1)
ORACLE有四種型別的內部事件: u 直接DUMP(Immediate dumps) u 設定條件DUMP(Conditional dumps) u Trace dumps u 透過事件設定修改資料庫工作特性 每一個事件都有一個事件號,事件號跟ORACLE的錯誤資訊的編碼是一樣的.如10046和ORA-10046。每一個事件都有一個Level,可以是以下幾種形式: n 範圍1到10 n 位標 0x01 0x02 0x04 0x08 0x10 n 標識 0=off,1=on n ID號 物件ID(object id),記憶體地址(memory address) 要注意的是,ORACLE內部事件在每一個版本之間都有一定的改變。有一些存在的事件可能在新版本的資料庫中已經不可用了,有些事件號會由新的事件所替代掉.也要注意在當前的版本中message file不一定可以反映出所有事件的特徵。很多事件會影響資料庫的行為,設定事件是一種有風險的操作,某些事件極有可能導致資料庫宕掉。在沒有ORACLE技術支援的前提下,最好不要在實際執行系統上做事件操作.開發系統上如果要做事件操作最好先做個資料庫的全備份. 事件可以在Instance一級啟用,可以在配置檔案中設定: event='event trace name context forever, level level'; 一次可以啟用多個事件,可以用以下兩種方式: l 用一個冒號隔開: event = "10248 trace name context forever, level 10:10249 trace name context forever, level 10" l 兩個兩個事件分開寫 event="10248 trace name context forever, level 10" event="10249 trace name context forever, level 10" 事件也可以在Instance一級用ALTER SYSTEM命令來啟用: ALTER SYSTEM SET EVENTS 'event trace name context forever, level level'; 在Instance一級用以下命令啟用: ALTER SYSTEM SET EVENTS 'event trace name context off'; 事件也可以在Session一級用ALTER SESSION命令來啟用: ALTER SESSION SET EVENTS 'event trace name context forever, level level'; 在Session一級用以下命令啟用: ALTER SESSION SET EVENTS 'event trace name context off'; 事件也可以用ORADEBUG來啟用, 在一個程式中實現啟用: ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level 在某個程式中啟用事件的命令如下: ORADEBUG SETORAPID 8(PID程式號) ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level 用以下命令啟用: ORADEBUG EVENT event TRACE NAME CONTEXT OFF 下面命令可以用ORADEBUG在Session中實現事件啟用: ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level 在Session中實現啟用: ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF Events也可以用DBMS_SYSTEM.SET_EV包來實現啟用(在做之前要先從V$session檢視中獲得SID和Serial#)。用以下方式: EXECUTE DBMS_SYSTEM.SET_EV(SID,Serial#,event,level, '') 比如: EXECUTE dbms_system.set_ev (9,29,10046,8,''); 要去活則將level改為0,如: EXECUTE dbms_system.set_ev (9,29,10046,0,''); 有時候DBA需要在引數檔案中設定事件,在文字的引數檔案(PFILE)中設定事件很方便,只需要加入類似event='10325 trace name context forever, level 10'的文字就可以了。在SPFILE中也可以實現這樣的功能。在SPFILE中新增事件的例子如下: ALTER SYSTEM SET EVENT='10325 trace name context forever, level 10', '10015 trace name context forever, level 1' COMMENT='Debug tracing of control and rollback' SCOPE=SPFILE; 要注意的是,事件的設定範圍只能是SPFILE,不能在當前INSTANCE中設定。當資料庫啟動到NOMOUNT狀態的時候,就可以設定事件。如果要重新設定或者清除設定,使用如下命令: ALTER SYSTEM RESET EVENT SCOPE=SPFILE ; 在UNIX系統下,系統資訊檔案$ORACLE_HOME/rdbms/mesg/oraus.msg裡面可以檢視到所有的診斷事件。使用下面的指令碼也可以檢視目前系統中哪些事件是被啟用的: SET SERVEROUTPUT ON DECLARE l_level NUMBER; BEGIN FOR l_event IN 10000..10999 LOOP dbms_system.read_ev (l_event,l_level); IF l_level > 0 THEN dbms_output.put_line ('Event '||TO_CHAR (l_event)|| ' is set at level '||TO_CHAR (l_level)); END IF; END LOOP; END; /[@more@]http://www.oraclefans.cn/blog/showblog.jsp?rootid=5342
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/564597/viewspace-982600/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE診斷事件Oracle事件
- Oracle診斷事件列表Oracle事件
- ORACLE診斷事件(zt)Oracle事件
- Oracle診斷事件列表(轉)Oracle事件
- 等待事件快速定位診斷事件
- oracle 事件診斷詳細Oracle事件
- 等待事件效能診斷方法事件
- Oracle所有診斷事件列表eventsOracle事件
- Oracle診斷事件例項(一)Oracle事件
- oracle 10053診斷事件Oracle事件
- ORACLE診斷事件的總結Oracle事件
- 基於等待事件的效能診斷事件
- zt_oracle診斷事件event列表Oracle事件
- oracle診斷事件及深入解析10053事件Oracle事件
- 基於等待事件的效能診斷(轉)事件
- 如何診斷等待事件 enq: HW - contention事件ENQ
- 轉_診斷latch:shared pool等待事件事件
- latch free 等待事件的診斷語句事件
- 深入淺出等待事件和效能診斷01事件
- 深入淺出等待事件和效能診斷02事件
- 深入淺出等待事件和效能診斷04事件
- 深入淺出等待事件和效能診斷05事件
- oracle 10046事件故障診斷一例Oracle事件
- Oracle SQLT 診斷SQL語句效能(1)OracleSQL
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- db file async I/O submit等待事件的故障診斷MIT事件
- 索引分裂造成的index contention等待事件的診斷索引Index事件
- oracle小知識點16-診斷事件diagnostic eventsOracle事件
- 深入淺出等待事件和效能診斷記載03事件
- AIX+weblogic效能診斷記錄1AIWeb
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- oracle 12c 新增的診斷事件的初步嘗試Oracle事件
- 【event messages】使用PL/SQL獲取Oracle診斷事件列表SQLOracle事件
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- ORACLE診斷案例Oracle
- Oracle故障診斷Oracle
- 遭遇cursor:pin x等待事件定位阻塞會話診斷過程事件會話
- 使用SQL_TRACE進行資料庫診斷(1)SQL資料庫