oracle 跟蹤檔案和轉儲命令及常用轉儲命令(轉)

passion_of_data發表於2011-07-26

一、Oracle跟蹤檔案
        Oracle
跟蹤檔案分為三種型別,一種是後臺報警日誌檔案,記錄資料庫在啟動、關閉和執行期間後臺程式的活動情況,如表空間建立、回滾段建立、某些alter命令、日誌切換、錯誤訊息等。在資料庫出現故障時,應首先檢視該檔案,但檔案中的資訊與任何錯誤狀態沒有必然的聯絡。後臺報警日誌檔案儲存BACKGROUND_DUMP_DEST引數指定的目錄中,檔案格式為SIDALRT.LOG。另一種型別是DBWRLGWRSMON等後臺程式建立的後臺跟蹤檔案。後臺跟蹤檔案根據後臺程式執行情況產生,後臺跟蹤檔案也儲存在BACKGROUND_DUMP_DEST引數指定的目錄中,檔案格式為siddbwr.trcsidsmon.trc等。還有一種型別是由連線到Oracle的使用者程式(Server Processes)生成的使用者跟蹤檔案。這些檔案僅在使用者會話期間遇到錯誤時產生。此外,使用者可以通過執行oracle跟蹤事件(見後面)來生成該類檔案,使用者跟蹤檔案儲存在USER_DUMP_DEST引數指定的目錄中,檔案格式為oraxxxxx.trcxxxxx為建立檔案的程式號(或執行緒號)。

二、Oracle跟蹤事件

Oracle提供了一類命令,可以將Oracle各類內部結構中所包含的資訊轉儲(dump)到跟蹤檔案中,

 以便使用者能根據檔案內容來解決各種故障。設定跟蹤事件有兩種方法,

 一種是在init.ora檔案中設定事件,這樣open資料庫後,將影響到所有的會話。設定格式如下:

        EVENT="eventnumber trace name eventname [forever,] [level levelnumber] : ......."

通過:符號,可以連續設定多個事件,也可以通過連續使用event來設定多個事件。

另一種方法是在會話過程中使用alter session set events命令,只對當前會話有影響。設定格式如下:

        alter session set events '[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : .......'

通過:符號,可以連續設定多個事件,也可以通過連續使用alter session set events 來設定多個事件。  

格式說明:eventnumber指觸發dump的事件號,事件號可以是Oracle錯誤號(出現相應錯誤時跟蹤指定的事件)或oralce內部事件號,內部事件號在1000010999之間,不能與immediate關鍵字同用。

          immediate關鍵字表示命令發出後,立即將指定的結構dump到跟蹤檔案中,這個關鍵字只用在alter session語句中,

          並且不能與eventnumberforever關鍵字同用。

          trace name 是關鍵字。

          eventname指事件名稱(見後面),即要進行dump的實際結構名。若eventnamecontext

          則指根據內部事件號進行跟蹤。

          forever關鍵字表示事件在例項或會話的週期內保持有效狀態,不能與immediate同用。

          level為事件級別關鍵字。但在dump錯誤棧(errorstack)時不存在級別。

          levelnumber表示事件級別號,一般從1101表示只dump結構頭部資訊,10表示dump結構的  

 

1buffers事件:dump SGA緩衝區中的db buffer結構
   alter session set events 'immediate trace name buffers level 1'; --
表示dump緩衝區的頭部。

2blockdump事件: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個資料塊。

3controlf事件:dump控制檔案結構
   alter session set events 'immediate trace name controlf level 10'; --
表示dump控制檔案的所有內容。

4locks事件:dump LCK程式的鎖資訊
   alter session set events 'immediate trace name locks level 5';

5redohdr事件: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';

6loghist事件:dump控制檔案中的日誌歷史項
   alter session set events 'immediate trace name loghist level 1'; --
表示只dump最早和最遲的日誌歷史項。
   levelnumber
大於等於2時,表示2levelnumber次方個日誌歷史項。
   alter session set events 'immediate trace name loghist level 4'; --
表示dump 16個日誌歷史項。

7file_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 所有資料檔案的完整檔案頭。

8errorstack事件:dump 錯誤棧資訊,通常Oracle發生錯誤時前臺程式將得到一條錯誤資訊,但某些情況下得不到錯誤資訊,可以
採用這種方式得到Oracle錯誤。
   alter session set events '604 trace name errorstack forever'; --
表示當出現604錯誤時,dump 錯誤棧和程式棧。

9systemstate事件:dump所有系統狀態和程式狀態
   alter session set events 'immediate trace name systemstate level 10'; --
表示dump 所有系統狀態和程式狀態。

10coalesec事件:dump指定表空間中的自由區間
    levelnumber
以十六進位制表示時,兩個高位位元組表示自由區間數目,兩個低位位元組表示表空間號,如0x00050000表示dump系統表空間中的
5
個自由區間,轉換成十進位制就是327680,即:
    alter session set events 'immediate trace name coalesec level 327680';

11processsate事件:dump程式狀態
    alter session set events 'immediate trace name processsate level 10';

12library_cache事件:dump library cache資訊
    alter session set events 'immediate trace name library_cache level 10';

13heapdump事件:dump PGASGAUGA中的資訊
    alter session set events 'immediate trace name heapdump level 1';

14row_cache事件:dump資料字典緩衝區中的資訊
    alter session set events 'immediate trace name row_cache level 1';

 

三、內部事件號

110013:用於監視事務恢復

210015:轉儲UNDO SEGMENT頭部
        event = "10015 trace name context forever"

310029:用於給出會話期間的登陸資訊

410030:用於給出會話期間的登出資訊

510032:轉儲排序的統計資訊

610033:轉儲排序增長的統計資訊

710045:跟蹤Freelist管理操作

810046:跟蹤SQL語句
   alter session set events '10046 trace name context forever, level 4'; --
跟蹤SQL語句並顯示繫結變數
   alter session set events '10046 trace name context forever, level 8'; --
跟蹤SQL語句並顯示等待事件

910053:轉儲優化策略

1010059:模擬redo日誌中的建立和清除錯誤

1110061:阻止SMON程式在啟動時清除臨時段

1210079:轉儲 SQL*NET統計資訊

1310081:轉儲高水標記變化

1410104:轉儲Hash連線統計資訊

1510128:轉儲分割槽休整資訊

1610200:轉儲一致性讀資訊

1710201:轉儲一致性讀中Undo應用

1810209:允許在控制檔案中模擬錯誤

1910210:觸發資料塊檢查事件
        event = "10210 trace name context forever, level 10"

2010211:觸發索引檢查事件

2110213:模擬在寫控制檔案後崩潰

2210214:模擬在控制檔案中的寫錯誤
   levelnumber
1-9表示產生錯誤的塊號,大於等於10則每個控制檔案將出錯

2310215:模擬在控制檔案中的讀錯誤

2410220:轉儲Undo頭部變化

2510221;轉儲Undo變化

2610224:轉儲索引的分隔與刪除

2710225:轉儲基於字典管理的區間的變化

2810229:模擬在資料檔案上的I/O錯誤

2910231:設定在全表掃描時忽略損壞的資料塊
         alter session set events '10231 trace name context off'; --
關閉會話期間的資料塊檢查
         event = "10231 trace name context forever, level 10" --
對任何程式讀入SGA的資料塊進行檢查

3010232:將設定為軟損壞(DBMS_REPAIR包設定或DB_BLOCK_CHECKINGTRUE時設定)的資料塊dump到跟蹤檔案

3110235:用於記憶體堆檢查
   alter session set events '10235 trace name context forever, level 1';

3210241:轉儲遠端SQL執行

3310246:跟蹤PMON程式

3410248:跟蹤dispatch程式

3510249:跟蹤MTS程式

3610252:模擬寫資料檔案頭部錯誤

3710253:模擬寫redo日誌檔案錯誤

3810262:允許連線時存在記憶體洩漏
   alter session set events '10262 trace name context forever, level 300'; --
允許存在300個位元組的記憶體洩漏

3910270:轉儲共享遊標

4010285:模擬控制檔案頭部損壞

4110286:模擬控制檔案開啟錯誤

4210287:模擬歸檔出錯

4310357:除錯直接路徑機制

4410500:跟蹤SMON程式

4510608:跟蹤點陣圖索引的建立

4610704:跟蹤enqueues

4710706:跟蹤全域性enqueues

4810708:跟蹤RACbuffer cache

4910710:跟蹤對點陣圖索引的訪問

5010711:跟蹤點陣圖索引合併操作

5110712:跟蹤點陣圖索引OR操作

5210713:跟蹤點陣圖索引AND操作

5310714:跟蹤點陣圖索引MINUS操作

5410715:跟蹤點陣圖索引向ROWID的轉化

5510716:跟蹤點陣圖索引的壓縮與解壓

5610719:跟蹤點陣圖索引的修改

5710731:跟蹤遊標宣告

5810928:跟蹤PL/SQL執行

5910938:轉儲PL/SQL執行統計資訊

 

四、常用轉儲命令

().Memory Dumps

1).Global Area
ALTER SESSION SET EVENTS ‘immediate trace name global_area level n’;
1
包含PGA
2
包含SGA
4
包含UGA
8
包含indrect memory

 

2).Library Cache
ALTER SESSION SET EVENTS ‘immediate trace name library_cache level n’;
1 library cache
統計資訊
2
包含hash table histogram
3
包含object handle
4
包含object結構(Heap 0

 

3).Row Cache
ALTER SESSION SET EVENTS ‘immediate trace name row_cache level n’;
1 row cache
統計資訊
2
包含hash table histogram
8
包含object結構

 

4).Buffers
ALTER SESSION SET EVENTS ‘immediate trace name buffers level n’;
1 buffer header
2 level 1 + block header
3 level 2 + block contents
4 level 1 + hash chain
5 level 2 + hash chain
6 level 3 + hash chain
8 level 4 + users/waiters
9 level 5 + users/waiters
10 level 6 + users/waiters

 

5).Buffer
ALTER SESSION SET EVENTS ‘immediate trace name buffer level n’;
n
為某個指定blockrdba,該命令可以轉儲某個blockbuffer中的所有版本。

 

6).Heap
ALTER SESSION SET EVENTS ‘immediate trace name heapdump level n’;
1 PGA
摘要
2 SGA
摘要
4 UGA
摘要
8 Current call(CGA)
摘要
16 User call(CGA)
摘要
32 Large call(LGA)
摘要
1025 PGA
內容
2050 SGA
內容
4100 UGA
內容
8200 Current call
內容
16400 User call
內容
32800 Large call
內容

 

7).Sub Heap
Oracle 9.0.1
版本之前
ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level n’;
nsubheap的地址,轉儲的是subheap的摘要資訊
nsubheap的地址+1,轉儲的則是subheap的內容
Oracle 9.2.0
版本之後
ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level n, addr m’;
其中msubheap的地址
n
1轉儲subheap的摘要,n2轉儲subheap的內容

 

8).Process State
ALTER SESSION SET EVENTS ‘immediate trace name processstate level n’;

 

9).System State
ALTER SESSION SET EVENTS ‘immediate trace name systemstate level n’;

 

10).Error State
ALTER SESSION SET EVENTS ‘immediate trace name errorstack level n’;
0 Error stack
1 level 0 + function call stack
2 level 1 + process state
3 level 2 + context area


11).Hang Analysis
ALTER SESSION SET EVENTS ‘immediate trace name hanganalyze level n’;

 

12).Work Area
ALTER SESSION SET EVENTS ‘immediate trace name workareatab_dump level n’;
1 SGA
資訊
2 Workarea Table
摘要資訊
3 Workarea Table
詳細資訊

 

13).Latches
ALTER SESSION SET EVENTS ‘immediate trace name latches level n’;
1 latch
資訊
2
統計資訊

 

14).Events
ALTER SESSION SET EVENTS ‘immediate trace name events level n’;
1 session
2 process
3 system

 

15).Locks
ALTER SESSION SET EVENTS ‘immediate trace name locks level n’;

 

16).Shared Server Process
ALTER SESSION SET EVENTS ‘immediate trace name shared_server_state level n’;
n
取值為1~14

 

17).Background Messages
ALTER SESSION SET EVENTS ‘immediate trace name bg_messages level n’;
n
pid+1

 

().File Dumps

1).Block
Oracle 7
之前
ALTER SESSION SET EVENTS ‘immediate trace name blockdump level n’;
n
blockrdba
Oracle8
以後
ALTER SYSTEM DUMP DATAFILE file# BLOCK block#;
ALTER SYSTEM DUMP DATAFILE file#
BLOCK MIN minimum_block#
BLOCK MAX maximum_block#;

 

2).Tree Dump
ALTER SESSION SET EVENTS ‘immediate trace name treedump level n’;
n
object_id

 

3).Undo Segment Header
ALTER SYSTEM DUMP UNDO_HEADER ’segment_name’;

 

4).Undo for a Transaction
ALTER SYSTEM DUMP UNDO BLOCK ’segment_name’ XID xidusn xidslot xidsqn;

 

5).File Header
ALTER SESSION SET EVENTS ‘immediate trace name file_hdrs level n’;
1
控制檔案中的檔案頭資訊
2 level 1 +
檔案頭資訊
3 level 2 +
資料檔案頭資訊
10 level 3

 

6).Control file
ALTER SESSION SET EVENTS ‘immediate trace name controlf level n’;
1
檔案頭資訊
2 level 1 +
資料庫資訊 + 檢查點資訊
3 level 2 +
可重用節資訊
10 level 3

 

7).Redo log Header
ALTER SESSION SET EVENTS ‘immediate trace name redohdr level n’;
1
控制檔案中的redo log資訊
2 level 1 +
檔案頭資訊
3 level 2 +
日誌檔案頭資訊
10 level 3

 

8).Redo log
ALTER SYSTEM DUMP LOGFILE ‘FileName’;
ALTER SYSTEM DUMP LOGFILE ‘FileName’
SCN MIN MinimumSCN
SCN MAX MaximumSCN
TIME MIN MinimumTime
TIME MAX MaximumTime
LAYER Layer
OPCODE Opcode
DBA MIN FileNumber . BlockNumber
DBA MAX FileNumber . BlockNumber
RBA MIN LogFileSequenceNumber . BlockNumber
RBA MAX LogFileSequenceNumber . BlockNumber;
其中time = (((((yyyy – 1988)) * 12 + mm – 1) * 31 + dd – 1) * 24 + hh) * 60 + mi) * 60 + ss;

 

9).Loghist
ALTER SESSION SET EVENTS ‘immediate trace name loghist level n’;
1 dump
控制檔案中最早和最遲的日誌歷史項
1 dump 2^n
個日誌歷史項

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25964700/viewspace-703153/,如需轉載,請註明出處,否則將追究法律責任。

相關文章