oracle events
oracle 的事件可以分2種:1是等待事件,2診斷事件.我們在下面學習下ORACLE的診斷事件.
ORACLE 的診斷事件大概分成4個主要的類別
1 .Dump diagnostic information on request(即IMMEDIATE 轉儲事件)通常用來轉儲系統狀態,程式狀態,和檔案頭部等等(CONTROLF,REDOHDR,FILE_HDRS)
alter session set events 'immediate trace name controlf level 10';(通常IMMEDIATE 用ALTER SESSION 來執行,這類事件不能放到INIT.ORA中,就算設定此引數也不會生效)
ORADEBUG SETMYPID
ORADEBUG DUMP CONTROLF 10
2 . Dump diagnostic information when an error occurs(即ON ERROR轉儲事件)
alter system set events '4031 trace name errorstack level 1'; 當發生ORA-04031的時候系統會把錯誤的堆疊DUMP出來.一般等級為3個等級,1級錯誤堆疊和函式呼叫堆疊.2級級別1加上程式狀態.3級在級別2上加上了上下文區域.當然我們通常是在INIT.ORA中設定EVENT='***'
3. Change database behavior(即是改變資料庫的行為)
EVENT='10269 TRACE NAME CONTEXT FOREVER'次時間就是禁止PMON 對空間空間的合併
4. Produce trace diagnostics as the database runs(即PROCESS TRACE 獲得額外的資訊)
EXEC DBMS_SYSTEM.EV(142,7,10046,10,'');
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER LEVEL 12';
EVENT的語法:
{: }*
::=
::= "trace"|"debugger"|"crash"
::= {,}*
For "trace" action:
::= {;}*
::= "name"
{,}*
::= ""|"off"|
"after times"|
"forever"|
"lifetime"|
"level"|
"type"
::= "increment"|"decrement"|"constant"
從以上語法不難看出
如果我們開啟一個EVENTS
alter system set events '4031 trace name errorstack level 1';
可以透過
alter system set events '4031 trace name errorstack off;
來關閉他.
如何設定EVENT 呢?
有4種方法
1.在PFILE或SPFILE 中指定 EVENT 引數
例如:ALTER SYSTEM SET EVNT='60 TRACE NAME ERRORSTACK' SCOPE=SPFILE;
2.透過ALTER SESSION/SYSTEM 來設定
例如:ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME SYSTEMSTATE LEVEL 10'
ALTER SYSTEM SET EVNETS '604 TRACE NAME ERRORSTACK'
3.透過DBMS_SYSTEM.SET_EV 這個儲存過程
例如:EXEC DBMS_SYSTEM.SET_EV(142,7,10046,10,'')
4.透過ORADEBUG 工具設定
例如:ORADEBUG SETMYPID
ORADEBUG UNLIMIT
ORADEBUG DUMP CONTROLF 10
如果你想設定多個EVENT呢?
有2種方法
1.在PFILE 中指定EVENT時候 可以連續設定2個EVENT 引數(2個EVENT 必須上下在一起 如果分開第一個EVENT 將失效)
例如:EVENT='10015 TRACE NAME CONTEXT FOREVER'
EVENT='10046 TRACE NAME CONTEXT FOREVER ,LEVEL 10'
必須2個連在一起.
2.在EVENT 中 每個EVENT 用:隔離.
例如:EVENT='10015 TRACE NAME CONTEXT FOREVER:10046 TRACE NAME CONTEXT FOREVER ,LEVEL 10'
在使用DBMS_SYSTEM.SET_EV時候有幾點注意下.
DBMS_SYSTEM.SET_EV(SID,SERIAL#,EVENT,LEVEL,ACTION)
LEVEL 是在是指DUMP的等級,如果是在BLOCK DUMP 的時候是指DBA
ACTION 是在TRACE NAME(65535 EVENT 時候指定此引數如CONTROLF,SYSTEMSTATE,PROCESSSTATE.
我們如何來檢視1個SESSEN開了那些EVENT呢?
DBMS_SYSTEM.READ_EV
來檢視
declare
event_level number;
begin
for i in 10000..10999 loop
dbms_system.read_ev(i,event_level);
if event_level>0 then
dbms_output.put_line('EVENT '||to_char(i)||' set at level '||to_char(event_level));
end if;
end loop;
end;
/
[@more@]
ORACLE 的診斷事件大概分成4個主要的類別
1 .Dump diagnostic information on request(即IMMEDIATE 轉儲事件)通常用來轉儲系統狀態,程式狀態,和檔案頭部等等(CONTROLF,REDOHDR,FILE_HDRS)
alter session set events 'immediate trace name controlf level 10';(通常IMMEDIATE 用ALTER SESSION 來執行,這類事件不能放到INIT.ORA中,就算設定此引數也不會生效)
ORADEBUG SETMYPID
ORADEBUG DUMP CONTROLF 10
2 . Dump diagnostic information when an error occurs(即ON ERROR轉儲事件)
alter system set events '4031 trace name errorstack level 1'; 當發生ORA-04031的時候系統會把錯誤的堆疊DUMP出來.一般等級為3個等級,1級錯誤堆疊和函式呼叫堆疊.2級級別1加上程式狀態.3級在級別2上加上了上下文區域.當然我們通常是在INIT.ORA中設定EVENT='***'
3. Change database behavior(即是改變資料庫的行為)
EVENT='10269 TRACE NAME CONTEXT FOREVER'次時間就是禁止PMON 對空間空間的合併
4. Produce trace diagnostics as the database runs(即PROCESS TRACE 獲得額外的資訊)
EXEC DBMS_SYSTEM.EV(142,7,10046,10,'');
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER LEVEL 12';
EVENT的語法:
For "trace" action:
"after
"forever"|
"lifetime
"level
"type
從以上語法不難看出
如果我們開啟一個EVENTS
alter system set events '4031 trace name errorstack level 1';
可以透過
alter system set events '4031 trace name errorstack off;
來關閉他.
如何設定EVENT 呢?
有4種方法
1.在PFILE或SPFILE 中指定 EVENT 引數
例如:ALTER SYSTEM SET EVNT='60 TRACE NAME ERRORSTACK' SCOPE=SPFILE;
2.透過ALTER SESSION/SYSTEM 來設定
例如:ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME SYSTEMSTATE LEVEL 10'
ALTER SYSTEM SET EVNETS '604 TRACE NAME ERRORSTACK'
3.透過DBMS_SYSTEM.SET_EV 這個儲存過程
例如:EXEC DBMS_SYSTEM.SET_EV(142,7,10046,10,'')
4.透過ORADEBUG 工具設定
例如:ORADEBUG SETMYPID
ORADEBUG UNLIMIT
ORADEBUG DUMP CONTROLF 10
如果你想設定多個EVENT呢?
有2種方法
1.在PFILE 中指定EVENT時候 可以連續設定2個EVENT 引數(2個EVENT 必須上下在一起 如果分開第一個EVENT 將失效)
例如:EVENT='10015 TRACE NAME CONTEXT FOREVER'
EVENT='10046 TRACE NAME CONTEXT FOREVER ,LEVEL 10'
必須2個連在一起.
2.在EVENT 中 每個EVENT 用:隔離.
例如:EVENT='10015 TRACE NAME CONTEXT FOREVER:10046 TRACE NAME CONTEXT FOREVER ,LEVEL 10'
在使用DBMS_SYSTEM.SET_EV時候有幾點注意下.
DBMS_SYSTEM.SET_EV(SID,SERIAL#,EVENT,LEVEL,ACTION)
LEVEL 是在是指DUMP的等級,如果是在BLOCK DUMP 的時候是指DBA
ACTION 是在TRACE NAME(65535 EVENT 時候指定此引數如CONTROLF,SYSTEMSTATE,PROCESSSTATE.
我們如何來檢視1個SESSEN開了那些EVENT呢?
DBMS_SYSTEM.READ_EV
來檢視
declare
event_level number;
begin
for i in 10000..10999 loop
dbms_system.read_ev(i,event_level);
if event_level>0 then
dbms_output.put_line('EVENT '||to_char(i)||' set at level '||to_char(event_level));
end if;
end loop;
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8188536/viewspace-1027546/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE EVENTS(轉)Oracle
- Oracle RAC Wait EventsOracleAI
- Oracle Enqueues Wait Events 二OracleENQAI
- Oracle Enqueues Wait Events 一OracleENQAI
- Oracle Enqueues Wait Events 三OracleENQAI
- Oracle RAC Cache Fusion系列十八:Oracle RAC Statisticsand Wait EventsOracleAI
- Oracle Enqueues Wait Events 三 enq: TX - row lock contentionOracleENQAI
- Oracle不同版本檢視資料庫session/system級別設定了哪些eventsOracle資料庫Session
- efcore 新特性 SaveChanges Events
- pointer-events屬性
- CSS3 pointer-eventsCSSS3
- binlog_rows_query_log_events
- Random Events CodeForces - 1461Crandom
- Nodejs學習筆記-01 eventsNodeJS筆記
- Server-sent Events 介面壓測Server
- 簡述 Laravel Model Events 的使用Laravel
- 徹底搞懂 Kubernetes 中的 Events
- CSS pointer-events屬性的使用CSS
- NodeJS Events模組原始碼學習NodeJS原始碼
- server-side-events(SSE)開發指南(Node)ServerIDE
- [譯] Vue 3: Data 江河日下,Events 拔犀擢象Vue
- Camunda定時器事件示例Demo(Timer Events)定時器事件
- 有趣的 events_statements_current 表問題
- 深入淺出 Server-sent events 技術Server
- mysql的mysql.event和information_schema.eventsMySqlORM
- Solidity語言學習筆記————33、事件(Events)Solid筆記事件
- Fabric 1.0原始碼分析(13)events(事件服務)原始碼事件
- MySQL:關於Wating for Slave workers to free pending events等待MySql
- alter system set event和set events的區別
- MySQL案例08:MySQL Scheduler Events帶來的風險MySql
- Locust效能測試工具核心技術@task和@events
- WPF mvvm canvas move elements via mouse down, up and move eventsMVVMCanvas
- 你唯一需要的是“Wide Events”,而非“Metrics、Logs、Traces”IDE
- 服務端推送技術 Server-sent Events 快速上手服務端Server
- node中事件(events)模組一些用法和原理事件
- Node.js-Events 模組總結與原始碼解析Node.js原始碼
- Grafana 系列文章(十三):如何用 Loki 收集檢視 Kubernetes EventsGrafanaLoki
- [原始碼解讀]一文徹底搞懂Events模組原始碼
- 技術分享:NodeJS中的Events(事件觸發器)講解NodeJS事件觸發器