診斷事件(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事件
- 基於等待事件的效能診斷(轉)事件
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- oracle 12c 新增的診斷事件的初步嘗試Oracle事件
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- ORACLE診斷案例Oracle
- Java診斷利器ArthasJava
- SQL問題診斷SQL
- 【Azure 事件中心】為應用程式閘道器(Application Gateway with WAF) 配置診斷日誌,傳送到事件中心事件APPGateway
- 免費網站seo診斷:從哪些維度進行診斷呢?網站
- Java執行緒診斷Java執行緒
- AI診斷心臟病比人類更準?但這只是識圖,不是診斷AI
- oracle之 redo過高診斷Oracle
- openGauss 支援WDR診斷報告
- 整車EOL 診斷系統
- Mac OSX網路診斷命令Mac
- 9 Oracle Data Guard 故障診斷Oracle
- 整車EOL診斷系統
- .Net Core服務診斷排查
- 如何選擇java診斷工具Java
- 故障分析 | Kubernetes 故障診斷流程
- Oracle診斷案例-Sql_traceOracleSQL
- .NET Core 服務診斷工具
- 網路診斷工具的使用
- OpenAI o1預覽版在數秒內準確診斷疾病OpenAI
- Oracle 12.1.0.2 impdp匯入慢診斷Oracle
- 前端網路診斷技術方案前端
- 健康“殺手”帕金森診斷新突破!
- 機器學習之模型診斷機器學習模型
- 光纖故障診斷和故障排查
- Java 虛擬機器診斷利器Java虛擬機
- 網站SEO診斷分析要點網站
- 愛上Java診斷利器之ArthasJava
- 吃透 JVM 診斷方法與工具使用JVM
- 診斷通用售後系統 — DGA
- 聊聊智慧診斷模型的構建模型
- 中小遊戲廠商診斷書遊戲
- Win10系統下網路診斷在哪_win10系統如何使用網路診斷Win10