依據錯誤號來跟蹤sql語句
在應用開發的時候,我們有時候只能看見錯誤號,不能知道錯誤的sql語句,這時候就要根據錯誤號來跟蹤sql語句
1、檢查sql_trace引數預設為false,將它改為true
alter system set sql_trace=true;
2、 執行下面語句,按照錯誤號來生成錯誤檔案
alter system set events '1861 trace name errorstack level 3';
alter system|session set events '[eventnumber|immediate] trace name
eventname [forever] [, level levelnumber] : …….’
通過:符號,可以連續設定多個事件,也可以通過連續使用alter session
set events來設定多個事件。
格式說明:eventnumber指觸發dump的事件號,事件號可以是Oracle錯誤號
(出現相應錯誤時跟蹤指定的事件)或oralce內部事件號,內部事件
號在10000到10999之間,不能與immediate關鍵字同用。
immediate關鍵字表示命令發出後,立即將指定的結構dump到跟蹤檔案中,
這個關鍵字只用在alter session語句中,並且不能與eventnumber、forever關
鍵字同用。
trace name是關鍵字
eventname指事件名稱(見後面),即要進行dump的實際結構名。若
eventname為context,則指根據內部事件號進行跟蹤。
forever關鍵字表示事件在例項或會話的週期內保持有效狀態,不能與
immediate同用。
level為事件級別關鍵字。但在dump錯誤棧(errorstack)時不存在級別。
levelnumber表示事件級別號,一般從1到10,1表示只dump結構頭部信
息,10表示dump結構的所有資訊。
-----1861是錯誤號
下面是關閉跟蹤語句
alter system set events '1861 trace name errorstack off';
errorstack:(1)、buffers事件:dump SGA緩衝區中的db buffer結構
alter session set events 'immediate trace name buffers level 1'; –表示
dump 緩衝區的頭部。
(2)、blockdump事件:dump資料檔案、索引檔案、回滾段檔案結構
alter session set events 'immediate trace name blockdump level
66666'; –表示dump塊地址為6666的資料塊。
在Oracle 8以後該命令已改為:
alter system dump datafile 11 block 9; –表示dump資料檔案號為11中
的第9個資料塊。
(3)、controlf事件:dump控制檔案結構
alter session set events 'immediate trace name controlf level 10'; –表
示dump控制檔案的所有內容。
(4)、locks事件:dump LCK程式的鎖資訊
alter session set events 'immediate trace name locks level 5';
(5)、redohdr事件:dump redo日誌的頭部資訊
alter session set events 'immediate trace name redohdr level 1'; –表示
dump redo日誌頭部的控制檔案項。
alter session set events 'immediate trace name redohdr level 2'; –表示
dump redo日誌的通用檔案頭。
alter session set events 'immediate trace name redohdr level 10'; –表
示dump redo日誌的完整檔案頭。
注意:redo日誌的內容dump可以採用下面的語句:
alter system dump logfile 'logfilename’;
(6)、loghist事件:dump控制檔案中的日誌歷史項
alter session set events 'immediate trace name loghist level 1'; –表示
只dump最早和最遲的日誌歷史項。
levelnumber大於等於2時,表示2的levelnumber次方個日誌歷史項。
alter session set events 'immediate trace name loghist level 4'; –表示
dump 16個日誌歷史項。
(7)、file_hdrs事件:dump所有資料檔案的頭部資訊
alter session set events 'immediate trace name file_hdrs level 1'; –表
示dump所有資料檔案頭部的控制檔案項。
alter session set events 'immediate trace name file_hdrs level 2'; –表
示dump所有資料檔案的通用檔案頭。
alter session set events 'immediate trace name file_hdrs level 10'; –
表示dump所有資料檔案的完整檔案頭。
(8)、errorstack事件:dump錯誤棧資訊,通常Oracle發生錯誤時前臺程式
將得到一條錯誤資訊,但某些情況下得不到錯誤資訊,可以採用這種方
式得到Oracle錯誤。
alter session set events '604 trace name errorstack forever’; –表示當
出現604錯誤時,dump錯誤棧和程式棧。
(9)、systemstate事件:dump所有系統狀態和程式狀態
alter session set events 'immediate trace name systemstate level
10'; –表示dump所有系統狀態和程式狀態。
(10)、coalesec事件:dump指定表空間中的自由區間
levelnumber以十六進位制表示時,兩個高位位元組表示自由區間數目,兩
個低位位元組表示表空間號,如0×00050000表示dump系統表空間中的
5個自由區間,轉換成十進位制就是327680,即:
alter session set events 'immediate trace name coalesec level
327680';
(11)、processsate事件:dump程式狀態
alter session set events 'immediate trace name processsate level 10';
(12)、library_cache事件:dump library cache資訊
alter session set events 'immediate trace name library_cache level 10';
(13)、heapdump事件:dump PGA、SGA、UGA中的資訊
alter session set events 'immediate trace name heapdump level 1';
(14)、row_cache事件:dump資料字典緩衝區中的資訊
alter session set events 'immediate trace name row_cache level 1';
3、查詢資料庫監控日誌
more alert_sid.log
一般日誌會出這樣的結果
Mon Oct 21 13:55:52 2013
OS Pid: 28178 executed alter system set events '1821 trace name errorstack
level 3'
Mon Oct 21 13:55:59 2013
Errors in file /u01/app/oracle/diag/rdbms/crm/crm/trace/crm_ora_28257.trc:
ORA-01821: date format not recognized
Mon Oct 21 13:56:02 2013
Trace dumping is performing id=[cdmp_20131021135602]
Mon Oct 21 13:56:13 2013
OS Pid: 28178 executed alter system set events '1821 trace name
errorstack off'
4、根據這個路徑去尋找跟蹤檔案
5、格式化這個跟蹤檔案,例如:tkprof crm_ora_29968.trc p_29968.pkf
1、檢查sql_trace引數預設為false,將它改為true
alter system set sql_trace=true;
2、 執行下面語句,按照錯誤號來生成錯誤檔案
alter system set events '1861 trace name errorstack level 3';
alter system|session set events '[eventnumber|immediate] trace name
eventname [forever] [, level levelnumber] : …….’
通過:符號,可以連續設定多個事件,也可以通過連續使用alter session
set events來設定多個事件。
格式說明:eventnumber指觸發dump的事件號,事件號可以是Oracle錯誤號
(出現相應錯誤時跟蹤指定的事件)或oralce內部事件號,內部事件
號在10000到10999之間,不能與immediate關鍵字同用。
immediate關鍵字表示命令發出後,立即將指定的結構dump到跟蹤檔案中,
這個關鍵字只用在alter session語句中,並且不能與eventnumber、forever關
鍵字同用。
trace name是關鍵字
eventname指事件名稱(見後面),即要進行dump的實際結構名。若
eventname為context,則指根據內部事件號進行跟蹤。
forever關鍵字表示事件在例項或會話的週期內保持有效狀態,不能與
immediate同用。
level為事件級別關鍵字。但在dump錯誤棧(errorstack)時不存在級別。
levelnumber表示事件級別號,一般從1到10,1表示只dump結構頭部信
息,10表示dump結構的所有資訊。
-----1861是錯誤號
下面是關閉跟蹤語句
alter system set events '1861 trace name errorstack off';
errorstack:(1)、buffers事件:dump SGA緩衝區中的db buffer結構
alter session set events 'immediate trace name buffers level 1'; –表示
dump 緩衝區的頭部。
(2)、blockdump事件:dump資料檔案、索引檔案、回滾段檔案結構
alter session set events 'immediate trace name blockdump level
66666'; –表示dump塊地址為6666的資料塊。
在Oracle 8以後該命令已改為:
alter system dump datafile 11 block 9; –表示dump資料檔案號為11中
的第9個資料塊。
(3)、controlf事件:dump控制檔案結構
alter session set events 'immediate trace name controlf level 10'; –表
示dump控制檔案的所有內容。
(4)、locks事件:dump LCK程式的鎖資訊
alter session set events 'immediate trace name locks level 5';
(5)、redohdr事件:dump redo日誌的頭部資訊
alter session set events 'immediate trace name redohdr level 1'; –表示
dump redo日誌頭部的控制檔案項。
alter session set events 'immediate trace name redohdr level 2'; –表示
dump redo日誌的通用檔案頭。
alter session set events 'immediate trace name redohdr level 10'; –表
示dump redo日誌的完整檔案頭。
注意:redo日誌的內容dump可以採用下面的語句:
alter system dump logfile 'logfilename’;
(6)、loghist事件:dump控制檔案中的日誌歷史項
alter session set events 'immediate trace name loghist level 1'; –表示
只dump最早和最遲的日誌歷史項。
levelnumber大於等於2時,表示2的levelnumber次方個日誌歷史項。
alter session set events 'immediate trace name loghist level 4'; –表示
dump 16個日誌歷史項。
(7)、file_hdrs事件:dump所有資料檔案的頭部資訊
alter session set events 'immediate trace name file_hdrs level 1'; –表
示dump所有資料檔案頭部的控制檔案項。
alter session set events 'immediate trace name file_hdrs level 2'; –表
示dump所有資料檔案的通用檔案頭。
alter session set events 'immediate trace name file_hdrs level 10'; –
表示dump所有資料檔案的完整檔案頭。
(8)、errorstack事件:dump錯誤棧資訊,通常Oracle發生錯誤時前臺程式
將得到一條錯誤資訊,但某些情況下得不到錯誤資訊,可以採用這種方
式得到Oracle錯誤。
alter session set events '604 trace name errorstack forever’; –表示當
出現604錯誤時,dump錯誤棧和程式棧。
(9)、systemstate事件:dump所有系統狀態和程式狀態
alter session set events 'immediate trace name systemstate level
10'; –表示dump所有系統狀態和程式狀態。
(10)、coalesec事件:dump指定表空間中的自由區間
levelnumber以十六進位制表示時,兩個高位位元組表示自由區間數目,兩
個低位位元組表示表空間號,如0×00050000表示dump系統表空間中的
5個自由區間,轉換成十進位制就是327680,即:
alter session set events 'immediate trace name coalesec level
327680';
(11)、processsate事件:dump程式狀態
alter session set events 'immediate trace name processsate level 10';
(12)、library_cache事件:dump library cache資訊
alter session set events 'immediate trace name library_cache level 10';
(13)、heapdump事件:dump PGA、SGA、UGA中的資訊
alter session set events 'immediate trace name heapdump level 1';
(14)、row_cache事件:dump資料字典緩衝區中的資訊
alter session set events 'immediate trace name row_cache level 1';
3、查詢資料庫監控日誌
more alert_sid.log
一般日誌會出這樣的結果
Mon Oct 21 13:55:52 2013
OS Pid: 28178 executed alter system set events '1821 trace name errorstack
level 3'
Mon Oct 21 13:55:59 2013
Errors in file /u01/app/oracle/diag/rdbms/crm/crm/trace/crm_ora_28257.trc:
ORA-01821: date format not recognized
Mon Oct 21 13:56:02 2013
Trace dumping is performing id=[cdmp_20131021135602]
Mon Oct 21 13:56:13 2013
OS Pid: 28178 executed alter system set events '1821 trace name
errorstack off'
4、根據這個路徑去尋找跟蹤檔案
5、格式化這個跟蹤檔案,例如:tkprof crm_ora_29968.trc p_29968.pkf
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23205405/viewspace-774733/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- phalcon:跟蹤sql語句SQL
- sqlplus 跟蹤sql語句SQL
- 使用10046跟蹤sql語句SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- sql語句錯誤SQL
- mysql如何跟蹤執行的sql語句MySql
- 【MySQL】如何對SQL語句進行跟蹤(trace)?MySql
- SQL效能的度量 - 語句級別的SQL跟蹤autotraceSQL
- 使用oracle的10046事件跟蹤SQL語句Oracle事件SQL
- [20150527]跟蹤單個sql語句.txtSQL
- oracle 使用者跟蹤 需要的sql語句總結OracleSQL
- 根據作業系統程式號,查詢sql語句作業系統SQL
- [20160704]從跟蹤檔案抽取sql語句.txtSQL
- 透過ORADEBUG運用10046事件跟蹤SQL語句事件SQL
- 透過ORA錯誤反思sql語句規範SQL
- 通過ORA錯誤反思sql語句規範SQL
- 執行SQL語句遇到3113錯誤SQL
- 通過sql跟蹤解決ORA-00942錯誤一例SQL
- [20130226]跟蹤特定IP的sql語句.txtSQL
- 根據DELTA自動生成SQL語句SQL
- [20131031]從跟蹤檔案中抽取sql語句.txtSQL
- 使用ErrorStack進行錯誤跟蹤及診斷Error
- 使用ErrorStack進行錯誤跟蹤及診斷!Error
- 使用Error Stack跟蹤Oracle錯誤堆疊資訊ErrorOracle
- 0624使用10035事件跟蹤無法執行的sql語句事件SQL
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- 使用ErrorStack進行Oracle錯誤跟蹤及診斷ErrorOracle
- 使用ERRORSTACK進行錯誤跟蹤及診斷(轉)Error
- [20200326]dbms_monitor跟蹤與SQL語句分析.txtSQL
- [20200417]跟蹤特定sql語句以及v$open_cursor檢視.txtSQL
- SQLServer進行SQL跟蹤SQLServer
- 會話級SQL跟蹤會話SQL
- SQL 的跟蹤方法traceSQL
- Java開發者應該知道的五款錯誤跟蹤工具Java
- 除錯跟蹤利器---strace除錯
- 根據SQL Id獲得SQL語句的執行計劃SQL
- 根據作業系統程式號檢視oracle對應的SQL語句內容作業系統OracleSQL
- sql 語句網路除錯和 sql 語句低層傳輸檢視SQL除錯