通過oracle event來dump資料檔案頭資訊

還不算暈發表於2013-11-17

1.直接使用dump資料檔案頭,無法查詢資料檔案頭資訊

直接通過alter system dump datafile n block min 1 max 10;是得不到任何有用資訊的,如下:
SQL> alter system dump datafile 1 block min 1 block max 10;
部分的DUMP檔案內容
Start dump data blocks tsn: 0 file#:1 minblk 1 maxblk 10
Block 1 (file header) not dumped:use dump file header command  --從這句可以看到資料檔案頭未DUMP出來。
Block dump from cache:
Dump of buffer cache at level 4 for tsn=0 rdba=4194306

2.使用oracle event來DUMP資料檔案頭資訊

Oracle跟蹤事件簡介:

可以將Oracle各類內部結構中所包含的資訊轉儲(dump)到跟蹤檔案中,以便使用者能根據檔案內容來解決各種故障。
immediate關鍵字表示命令發出後,立即將指定的結構dump到跟蹤檔案中,這個關鍵字只用在alter session語句中,並且不能與eventnumber、forever關鍵字同用。
trace name 是關鍵字。
eventname指事件名稱(見後面),即要進行dump的實際結構名。若eventname為context,則指根據內部事件號進行跟蹤。
forever關鍵字表示事件在例項或會話的週期內保持有效狀態,不能與immediate同用。
level為事件級別關鍵字。但在dump錯誤棧(errorstack)時不存在級別。
levelnumber表示事件級別號,一般從1到10,1表示只dump結構頭部資訊,10表示dump結構的所有資訊。
如在下面實驗中:
file_hdrs事件:dump所有資料檔案的頭部資訊
evel 1'; --表示dump 控制檔案中所有資料檔案頭部的。
level 2'; --表示dump 所有資料檔案的通用檔案頭-generic header。
level 3;  ---包含level2以及header information in the datafile
level 10'--表示dump 所有資料檔案的完整檔案頭。

實驗命令如下:--要求資料庫在MOUNT或OPEN狀態才可以執行以下命令。

SYS@ bys3>alter system set events 'immediate trace name file_hdrs level 3';    --將所有的資料檔案頭都轉儲
System altered.
SYS@ bys3>oradebug setmypid;      --此語句要用SYSDBA許可權執行,普通DBA使用者會報錯:ORA-01031: insufficient privileges
Statement processed.
SYS@ bys3>oradebug tracefile_name     --找出產生的TRACE檔名
/u01/app/oracle/product/11.2.0/dbhome_1/log/diag/rdbms/bys3/bys3/trace/bys3_ora_14351.trc
##################################################################################################

3.bys3_ora_14351.trc檔案內容:附簡單分析SYSTEM檔案頭資訊

Trace file /u01/app/oracle/product/11.2.0/dbhome_1/log/diag/rdbms/bys3/bys3/trace/bys3_ora_14351.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
System name:    Linux                            --所在主機的OS、資料庫相關資訊。
Node name:    bys3.bys.com
Release:    2.6.32-200.13.1.el5uek
Version:    #1 SMP Wed Jul 27 20:21:26 EDT 2011
Machine:    i686
Instance name: bys3
Redo thread mounted by this instance: 1
Oracle process number: 23
Unix process pid: 14351, image: oracle@bys3.bys.com (TNS V1-V3)
#########################################################
*** 2013-11-17 10:43:18.205        ---產生此TRACE的會話相關資訊
*** SESSION ID:(64.6265) 2013-11-17 10:43:18.205
*** CLIENT ID:() 2013-11-17 10:43:18.205
*** SERVICE NAME:(SYS$USERS) 2013-11-17 10:43:18.205
*** MODULE NAME:(sqlplus@bys3.bys.com (TNS V1-V3)) 2013-11-17 10:43:18.205
*** ACTION NAME:() 2013-11-17 10:43:18.205
###################################################
DUMP OF DATA FILES: 4 files in database
 
DATA FILE #1:
  name #4: /u01/oradata/bys3/system01.dbf   --此條目轉儲的是system01.dbf檔案的資料頭
creation size=64000 block size=8192 status=0xe head=4 tail=4 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0       --prev_file表示相同表空間的前一個資料檔案號,這裡沒有所以是0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:67 scn: 0x0000.000b3984 11/17/2013 10:00:19    --最近的檢查點發生的時間
 Stop scn: 0xffff.ffffffff 11/16/2013 12:07:14                 --資料庫仍在執行,所以STOP SCN是0xffff.ffffffff。
 Creation Checkpointed at scn:  0x0000.00000015 11/14/2013 14:24:22
 thread:1 rba:(0x1.3.10)
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   --有很多行0,節約篇幅,刪掉了。
  00000000 00000000 00000000 00000000 00000000 00000000
 Offline scn: 0x0000.00000000 prev_range: 0
 Online Checkpointed at scn:  0x0000.00000000     --表示此資料檔案online還是offline的,用於快速跳過archive log恢復
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:              --這一片是generic file header,level必須>=2才有此資訊,,,,,,,此句之前來自控制檔案,之後來自資料檔案頭。
    Compatibility Vsn = 186646528=0xb200000          --control,redo,datafile,tempfile都有相同的generic file header.通過以後的資訊對比

    Db ID=3358363031=0xc82c8d97, Db Name='BYS3'       --資料庫的DBID及DB_NAME,存在於DATAFILE的第一個BLOCK。  將16進位制轉換為10進位制:select to_number('c82c8d97','xxxxxxxxxxxxx') from dual;

    Activation ID=0=0x0
    Control Seq=1525=0x5f5, File size=64000=0xfa00     ---control seq表示控制檔案序列號,更新控制檔案的時候也會更新seq,如果控制檔案中的control seq小於資料檔案中的control sel,表示控制檔案來自於備份。File size 不是表示整個檔案的大小,而是表示當前儲存在cache layer中的大小
    File Number=1, Blksiz=8192, File Type=3 DATA      -----TYPE=3表示普通的資料檔案(包括undo,沒有temp,temp的type=6)     
-------file number是記錄在file$表中的,如果資料檔案被刪除,那麼file number可以重用
Tablespace #0 - SYSTEM  rel_fn:1       ----這一片資訊是從datafile header block 2中得到的,轉儲level必須為3才能得到此資訊。---tablespace#0表示表空間序號可以查詢v$tablespace.ts#驗證,rel_fn:1表示relative file
 number可以通過檢視dba_data_files.relative_fno查到

 SYS@ bys3>select name,ts# from v$tablespace;  --只擷取了部分顯示
NAME                                  TS#
------------------------------ ----------
SYSTEM                                  0
SYS@ bys3>select file_name,relative_fno from dba_data_files;  --只擷取了部分顯示
FILE_NAME                                RELATIVE_FNO
---------------------------------------- ------------
/u01/oradata/bys3/system01.dbf                      1
Creation   at   scn: 0x0000.00000015 11/14/2013 14:24:22 -------建庫的時間。我這裡是手動建庫,所以時間就是真實的建庫時間。如DBCA通過模板建庫,可能顯示為模板的時間。
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0  --RMAN備份不更新此記錄,熱備份BEGIN BACKUP方式會更新此資訊。
 reset logs count:0x318f5cd7 scn: 0x0000.00000001
 prev reset logs count:0x0 scn: 0x0000.00000000
 recovered at 11/15/2013 10:50:16
 status:0x2004 root dba:0x00400208 chkpt cnt: 67 ctl cnt:66    ---只有system才有root dba,用來定位bootstrap$,ctl cnt 是控制檔案的一份拷貝,用於鑑別控制檔案是否來自於備份.關於root dba:在SYSTEM檔案頭,Oracle儲存了一個root dba:Root dba: This field only occurs in data file #1, and is the location of blocks required during bootstrapping the data dictionary (bootstrap$)。Oracle10g之前, root dba:0x004001a1,指向file 1 block 417物件,DUMP 417物件可以發現最終指向的是file 1 block 377。。10G中是root dba:0x00400179,指向file 1 block 377。現在11G中是root dba:0x00400208,具體指向位置:FILE 1 BLOCK 520
begin-hot-backup file size: 0      --上面的backup scn更新,此處也更新
Checkpointed at scn:  0x0000.000b3984 11/17/2013 10:00:19  
 thread:1 rba:(0x31.2.10)
  enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
Backup Checkpointed at scn:  0x0000.00000000
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
External cache id: 0x0 0x0 0x0 0x0
Absolute fuzzy scn: 0x0000.00000000
Recovery fuzzy scn: 0x0000.00000000 01/01/1988 00:00:00
Terminal Recovery Stamp  01/01/1988 00:00:00
Platform Information:     Creation Platform ID: 10
Current Platform ID: 10    Last Platform ID: 10

4.除SYSTEM外的其它FILE資訊--擷取部分重要的

DATA FILE #2:
  name #5: /u01/oradata/bys3/sysaux01.dbf

creation size=41600 block size=8192 status=0xe head=5 tail=5 dup=1
 tablespace 1, index=2 krfil=2 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:67 scn: 0x0000.000b3984 11/17/2013 10:00:19
 Stop scn: 0xffff.ffffffff 11/16/2013 12:07:14
 Creation Checkpointed at scn:  0x0000.00000740 11/14/2013 14:24:54
 thread:1 rba:(0x1.1afb.10)
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
 Offline scn: 0x0000.00000000 prev_range: 0
 Online Checkpointed at scn:  0x0000.00000000
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:
    Compatibility Vsn = 186646528=0xb200000
    Db ID=3358363031=0xc82c8d97, Db Name='BYS3'
    Activation ID=0=0x0
    Control Seq=1525=0x5f5, File size=41600=0xa280
    File Number=2, Blksiz=8192, File Type=3 DATA                         -----TYPE=3表示普通的資料檔案(包括undo,沒有temp,temp的type=6)
Tablespace #1 - SYSAUX  rel_fn:2
Creation   at   scn: 0x0000.00000740 11/14/2013 14:24:54
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
 reset logs count:0x318f5cd7 scn: 0x0000.00000001
 prev reset logs count:0x0 scn: 0x0000.00000000
 recovered at 11/15/2013 10:50:16
 status:0x4 root dba:0x00000000 chkpt cnt: 67 ctl cnt:66
begin-hot-backup file size: 0

DATA FILE #3:
  name #6: /u01/oradata/bys3/undotbs01.dbf

creation size=25600 block size=8192 status=0xe head=6 tail=6 dup=1
 tablespace 2, index=3 krfil=3 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:67 scn: 0x0000.000b3984 11/17/2013 10:00:19
 Stop scn: 0xffff.ffffffff 11/16/2013 12:07:14
 Creation Checkpointed at scn:  0x0000.00000b51 11/14/2013 14:25:10
 thread:1 rba:(0x1.25a6.10)
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
 Offline scn: 0x0000.00000000 prev_range: 0
 Online Checkpointed at scn:  0x0000.00000000
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:
    Compatibility Vsn = 186646528=0xb200000
    Db ID=3358363031=0xc82c8d97, Db Name='BYS3'
    Activation ID=0=0x0
    Control Seq=1525=0x5f5, File size=25600=0x6400
    File Number=3, Blksiz=8192, File Type=3 DATA
Tablespace #2 - UNDOTBS1  rel_fn:3
Creation   at   scn: 0x0000.00000b51 11/14/2013 14:25:10
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
 reset logs count:0x318f5cd7 scn: 0x0000.00000001
 prev reset logs count:0x0 scn: 0x0000.00000000
 recovered at 11/15/2013 10:50:16
 status:0x4 root dba:0x00000000 chkpt cnt: 67 ctl cnt:66
begin-hot-backup file size: 0
Checkpointed at scn:  0x0000.000b3984 11/17/2013 10:00:19
 
DATA FILE #4:
  name #8: /u01/oradata/bys3/user01.dbf

creation size=6400 block size=8192 status=0xe head=8 tail=8 dup=1
 tablespace 4, index=5 krfil=4 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:67 scn: 0x0000.000b3984 11/17/2013 10:00:19
 Stop scn: 0xffff.ffffffff 11/16/2013 12:07:14
 Creation Checkpointed at scn:  0x0000.000034f9 11/14/2013 14:26:26
 thread:1 rba:(0x1.ce8a.10)
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
 Offline scn: 0x0000.00000000 prev_range: 0
 Online Checkpointed at scn:  0x0000.00000000
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
 Plugged readony: NO
 Plugin scnscn: 0x0000.00000000
 Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
 Online move state: 0
 V10 STYLE FILE HEADER:
    Compatibility Vsn = 186646528=0xb200000
    Db ID=3358363031=0xc82c8d97, Db Name='BYS3'
    Activation ID=0=0x0
    Control Seq=1525=0x5f5, File size=6400=0x1900
    File Number=4, Blksiz=8192, File Type=3 DATA
Tablespace #4 - USERS  rel_fn:4
Creation   at   scn: 0x0000.000034f9 11/14/2013 14:26:26
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
 reset logs count:0x318f5cd7 scn: 0x0000.00000001
 prev reset logs count:0x0 scn: 0x0000.00000000
 recovered at 11/15/2013 10:50:16
 status:0x4 root dba:0x00000000 chkpt cnt: 67 ctl cnt:66
begin-hot-backup file size: 0
Checkpointed at scn:  0x0000.000b3984 11/17/2013 10:00:19
 
TEMP FILE #1: External File #201
  name #7: /u01/oradata/bys3/temp01.dbf

creation size=2560 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 3, index=4 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000cb8 11/14/2013 14:25:12
 V10 STYLE FILE HEADER:
    Compatibility Vsn = 186646528=0xb200000
    Db ID=3358363031=0xc82c8d97, Db Name='BYS3'
    Activation ID=0=0x0
    Control Seq=37=0x25, File size=2560=0xa00
    File Number=1, Blksiz=8192, File Type=6 TEMP FILE     -----TYPE=3表示普通的資料檔案(包括undo,沒有temp,temp的type=6)
Tablespace #3 - TEMP  rel_fn:1
Creation   at   scn: 0x0000.00000cb8 11/14/2013 14:25:12
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
 reset logs count:0x0 scn: 0x0000.00000000
 prev reset logs count:0x0 scn: 0x0000.00000000
 recovered at 01/01/1988 00:00:00
 status:0x0 root dba:0x00000000 chkpt cnt: 0 ctl cnt:0
begin-hot-backup file size: 0
Checkpointed at scn:  0x0000.00000000

*** 2013-11-17 10:43:28.961
Processing Oradebug command 'setmypid'

*** 2013-11-17 10:43:28.975
Oradebug command 'setmypid' console output: <none>

*** 2013-11-17 10:43:36.900
Processing Oradebug command 'tracefile_name'

*** 2013-11-17 10:43:36.901
Oradebug command 'tracefile_name' console output:
/u01/app/oracle/product/11.2.0/dbhome_1/log/diag/rdbms/bys3/bys3/trace/bys3_ora_14351.trc

相關文章