認識Oracle控制檔案(10g) - final

tolywang發表於2011-05-18


一,dump控制檔案

dump控制檔案常用兩種方式:

1. 透過event可以dump出控制檔案的內容 。
SQL> alter session set events 'immediate trace name controlf level 12' ; 


2. 透過oradebug 匯出控制檔案的內容。 

C:\>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 5月 17 11:18:13 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining Scoring Engine options

SQL> oradebug setmypid ;
已處理的語句
SQL> oradebug dump controlf 12;
已處理的語句
SQL>

 

 

二,控制檔案的內容

以下是從測試資料庫dump出來的控制檔案中的內容。我們詳細來看一看。 


控制檔案由兩大部份組成:可重用的部份(reusable record)和不可重用
的部分。可重用的部分的大小可用CONTROL_FILE_RECORD_KEEP_TIME引數來
控制,該引數的預設值為7天,即可重用的部份的內容保留7天,一週之後
這部份的內容可能被覆蓋。可重用的部份是供恢復管理器(RMAN)來使用的,
這部份的內容可以自動擴充套件。   如果可重用部分的空間不足,但是所有的
record都還沒有達到7天,那麼record section就會擴充套件。 如果這個引數設
置為0,可重用部分就不會擴充套件,只要需要records就被重用。 重用部分 如
歸檔日誌檔案,各種備份記錄等。

 


0. 控制檔案頭
1. DATABASE ENTRY    資料庫項  
2. CHECKPOINT PROGRESS RECORDS   檢查點進度記錄  
3. EXTENDED DATABASE ENTRY     擴充套件的資料庫項 (Oracle9i才引入)
4. REDO THREAD RECORDS         重做執行緒項
5. LOG FILE RECORDS      日誌檔案記錄   
6. DATA FILE RECORDS     資料檔案記錄 
7. TEMP FILE RECORDS     臨時檔案記錄 (Oracle9i才引入) 
8. TABLESPACE RECORDS    表空間記錄 
9. RMAN CONFIGURATION RECORDS      RMAN配置記錄 (Oracle9i才引入)   
10. FLASHBACK LOGFILE RECORDS       閃回日誌檔案記錄
11. THREAD INSTANCE MAPPING RECORDS   執行緒例項mapping記錄 
12. MTTR RECORDS               Mean-Time-To-Recover (MTTR)記錄 
13. STANDBY DATABASE MAP RECORDS   Standby資料庫map記錄 
14. RESTORE POINT RECORDS          還原點記錄 


15. LOG FILE HISTORY RECORDS  日誌檔案歷史記錄 
16. OFFLINE RANGE RECORDS    離線範圍記錄
17. ARCHIVED LOG RECORDS     歸檔日誌記錄
18. BACKUP SET RECORDS       使用RMAN備份資料庫的備份集記錄  
19. BACKUP PIECE RECORDS     使用RMAN備份資料庫的備份片記錄 
20. BACKUP DATAFILE RECORDS  使用RMAN備份資料庫的備份資料檔案記錄 
21. BACKUP LOG RECORDS          使用RMAN備份資料庫的備份歸檔日誌記錄
22. DATAFILE COPY RECORDS       使用RMAN備份資料庫的資料檔案複製記錄 
23. BACKUP DATAFILE CORRUPTION RECORDS    使用RMAN備份資料庫的備份資料檔案損壞記錄 
24. DATAFILE COPY CORRUPTION RECORDS      使用RMAN備份資料庫的資料檔案複製損壞記錄
25. DELETION RECORDS          使用RMAN備份資料庫的刪除記錄 
26. PROXY COPY RECORDS        使用RMAN備份資料庫的代理複製記錄 
27. INCARNATION RECORDS         (Oracle9i才引入)   
28. RMAN STATUS RECORDS        RMAN狀態記錄
29. DATAFILE HISTORY RECORDS          資料檔案歷史記錄 
30. NORMAL RESTORE POINT RECORDS      正常還原點記錄  


按照定義,以上0~14部分是不可重用的部分,15~30是歸檔日誌記錄,各種備份記錄等可重用部分。

 

 


---------------
具體例子: 
---------------

Dump file d:\oracle\product\10.2.0\admin\test01\udump\test01_ora_3108.trc
Tue May 17 11:09:57 2011
ORACLE V10.2.0.1.0 - Production vsnsta=0
vsnsql=14 vsnxtr=3
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining Scoring Engine options
Windows Server 2003 Version V5.2 Service Pack 1
CPU                 : 2 - type 586, 1 Physical Cores
Process Affinity    : 0x00000000
Memory (Avail/Total): Ph:1068M/2037M, Ph+PgF:2274M/3889M, VA:1268M/2047M
Instance name: test01

Redo thread mounted by this instance: 1

Oracle process number: 21

Windows thread id: 3108, image: ORACLE.EXE (SHAD)


*** 2011-05-17 11:09:57.343
*** SERVICE NAME:(SYS$USERS) 2011-05-17 11:09:57.312
*** SESSION ID:(143.641) 2011-05-17 11:09:57.312
DUMP OF CONTROL FILES, Seq # 924 = 0x39c
 V10 STYLE. FILE HEADER:
 Compatibility Vsn = 169869568=0xa200100
 Db ID=3556425887=0xd3fac09f, Db Name='TEST01'
 Activation ID=0=0x0
 Control Seq=924=0x39c, File size=450=0x1c2
 File Number=0, Blksiz=16384, File Type=1 CONTROL

-- 以上內容說明dbid及dbname, Control Seq=924表示控制檔案的序列號,表示
控制檔案的更新次數,後面是對應的十六進位制,File size=450 表示控制檔案的
大小,是block數量,這裡的block_size=16K, 所以控制檔案大小是7200K, 和查
詢到的控制檔案大小一致。

 

***************************************************************************
DATABASE ENTRY    資料庫記錄
***************************************************************************
 (size = 316, compat size = 316, section max = 1, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 1, numrecs = 1)
-- size表示這個section的大小. extent=1表示沒有擴充套件. blkno=1表示控制檔案塊號。
 04/28/2011 11:29:06
 DB Name "TEST01"
 Database flags = 0x00404001 0x00001000
 Controlfile Creation Timestamp  04/28/2011 11:29:07
 -- 控制檔案建立時間 
 Incmplt recovery scn: 0x0000.00000000
 -- 不完全恢復scn 
 Resetlogs scn: 0x0000.000dc98f Resetlogs Timestamp  04/27/2011 12:51:15
 -- 啟用Resetlogs時的scn值和時間戳 
 Prior resetlogs scn: 0x0000.000d18da Prior resetlogs Timestamp  04/26/2011 13:35:12
 -- 啟用Resetlogs之前的scn值和時間戳 
 Redo Version: compatible=0xa200100
 -- redo 版本相容 10.2.0.1
 #Data files = 4, #Online files = 4
 -- 共有4個資料檔案,檔案全部處在聯機(online)狀態
 Database checkpoint: Thread=1 scn: 0x0000.00111793
 -- 資料庫檢查點SCN, 0x0000.00111793是十六進位制,轉化為10進位制就是1120147,
    與 select checkpoint_change#  from v$database; 查詢結果一致. 
 Threads: #Enabled=1, #Open=1, Head=1, Tail=1
 -- 當前啟用了一個執行緒,也僅僅開啟了這一個執行緒
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
 ..... 
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000
 Max log members = 3, Max data members = 1
  -- 資料庫允許每個日誌組最多有3個log member;
  -- 目前還不支援資料檔案的多路複用,因此Max data members的值為1,是為以後升級預留的。
 Arch list: Head=3, Tail=3, Force scn: 0x0000.000fecccscn: 0x0000.001115f2
  -- 歸檔列表,凡是開始scn (low scn)小於Force scn的redo log都被歸檔。強制scn
  -- 是所有重做都被歸檔的scn。
 Activation ID: 3557025609
 Controlfile Checkpointed at scn:  0x0000.001118f8 05/17/2011 07:43:57
  -- 當前控制檔案的檢查點SCN 
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 ... 
 


***************************************************************************
CHECKPOINT PROGRESS RECORDS     檢查點進度記錄
***************************************************************************
 (size = 8180, compat size = 8180, section max = 11, section in-use = 0,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 2, numrecs = 11)
THREAD #1 - status:0x2 flags:0x0 dirty:51
-- 執行緒資訊,有51個dirty block
low cache rba:(0xa.36aa.0) on disk rba:(0xa.379e.0)
-- low cache rba表示恢復的起點, on disk rba表示恢復時的終點。
-- 類似0xa.36aa.0表示重做日誌序列.資料塊號.偏移量  
on disk scn: 0x0000.00113a4d 05/17/2011 11:09:37
resetlogs scn: 0x0000.000dc98f 04/27/2011 12:51:15
heartbeat: 751355397 mount id: 3558756934
--  heartbeat :  ckpt每隔3秒會更新控制檔案中的檢查點部分

..... 

這一項從Oracle8開始引入在控制檔案當中。這裡主要是記錄了我們增量檢查點的狀態,因為
我們都知道自從checkpoint queue引入了Oracle後,每一個髒資料塊都會被移動到檢查點佇列,
按照Low RBA的順序來排列,那麼在寫出的時候也是按照Low RBA的順序寫出,對塊一級所做的
任何修改並不影響這個塊在checkpoint queue中的low rba位置順序。CKPT程式,按照每3秒的
heartbeat來更新我們的控制檔案,更新的就是這一塊區域。每3秒都是把最低的RBA,也就是
我們low rba的資訊寫入我們的控制檔案中的checkpoint progress records.

 

***************************************************************************
EXTENDED DATABASE ENTRY
***************************************************************************
 (size = 276, compat size = 276, section max = 1, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 147, numrecs = 1)
Control AutoBackup date(dd/mm/yyyy)=28/ 4/2011
Next AutoBackup sequence= 0
Database recovery target inc#:1, Last open inc#:1
flg:0x0, flag:0x0
Change tracking state=0, file index=0, checkpoint count=0
-- Block change tracking 設定為disable, 如果是enable, 那麼應該不是0 .
Flashback log count=0, block count=0
-- 閃回日誌量
Oldest guarantee restore point=0
 
 


***************************************************************************
REDO THREAD RECORDS      redo檢查點資訊 
***************************************************************************
 (size = 256, compat size = 256, section max = 8, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 9, numrecs = 8)
THREAD #1 - status:0xf thread links forward:0 back:0
 #logs:3 first:1 last:3 current:3 last used seq#:0xa
-- 有3個日誌檔案組,第一個是1, 最後一個是3,當前log seq#是10 .
 enabled at scn: 0x0000.000dc98f 04/27/2011 12:51:15
-- 啟用執行緒1時的scn值
 disabled at scn: 0x0000.00000000 01/01/1988 00:00:00
-- 禁用執行緒1時的scn值,因該執行緒目前處於開啟狀態,所以該值為無窮大
 opened at 05/17/2011 07:38:56 by instance test01
-- 開啟執行緒時間戳,及被哪個例項開啟
Checkpointed at scn:  0x0000.00111793 05/17/2011 07:38:56
 thread:1 rba:(0xa.23a.10)
 ---  rba:(0xa.23a.10)  表示日誌序列.資料塊號.偏移量  
 enabled  threads:  01000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  .... 
  00000000 00000000 00000000 00000000 00000000 00000000
 log history: 6
 
 
 
 
***************************************************************************
LOG FILE RECORDS      redo log file資訊 
***************************************************************************
 (size = 72, compat size = 72, section max = 16, section in-use = 3,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 10, numrecs = 16)
LOG FILE #1:
  (name #3) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\REDO01.LOG
 Thread 1 redo log links: forward: 2 backward: 0
-- LOG FILE #1寫滿後,會切換到forward: 2,即切換到LOG FILE #2,這一點
可以透過LOG FILE #1的Next scn: 0x0000.00107564等於LOG FILE #2的
Low scn: 0x0000.00107564 看出。 

 siz: 0x19000 seq: 0x00000008 hws: 0xa bsz: 512 nab: 0x4ac1 flg: 0x1 dup: 1
 Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000f340f
 Low scn: 0x0000.000feccc 05/12/2011 07:55:39
 Next scn: 0x0000.00107564 05/13/2011 07:48:16

-- 在一個事務提交後,會在redo log中存在一條redo記錄,同時,系統為其
提供一個最新的SCN,記錄在該條記錄中。如果該條記錄是在redo log被清空
(日誌滿做切換時或發生checkpoint時,所有變化日誌已經被寫入資料檔案中),
則其SCN被記錄為redo log的low SCN。以後在日誌再次被清空前寫入的redo記
錄中SCN則成為Next SCN。

LOG FILE #2:
  (name #2) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\REDO02.LOG
 Thread 1 redo log links: forward: 3 backward: 1
 siz: 0x19000 seq: 0x00000009 hws: 0x6 bsz: 512 nab: 0x6636 flg: 0x1 dup: 1
 Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.000feccc
 Low scn: 0x0000.00107564 05/13/2011 07:48:16
 Next scn: 0x0000.001115f2 05/16/2011 07:37:21
LOG FILE #3:
  (name #1) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\REDO03.LOG
 Thread 1 redo log links: forward: 0 backward: 2
 siz: 0x19000 seq: 0x0000000a hws: 0x5 bsz: 512 nab: 0xffffffff flg: 0x8 dup: 1
--  nab是日誌檔案中LGWR可用的下一個資料塊的地址,如果這個值是無窮大,說明
    這個日誌檔案是當前(LGWR正在寫入)的日誌檔案
 Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.00107564
 Low scn: 0x0000.001115f2 05/16/2011 07:37:21
 Next scn: 0xffff.ffffffff 01/01/1988 00:00:00 

--  可以注意到,在current redo中,next scn是無窮大(redo 3是current). 
--  日誌發生切換時會分配一個低scn和一個高scn,低scn就是上一個日誌的
高scn的值,而高scn則設定為無窮大,直到切換到下一個日誌檔案時,再將當
前日誌的高scn設定為下一個日誌檔案的低scn,將下一個日誌檔案的高scn設定
為無窮大。
 
日誌發生切換後,高scn就從無窮大改為Next scn(下一個scn)的值,該值將
作為切換後的日誌檔案的低scn

 


***************************************************************************
DATA FILE RECORDS
***************************************************************************
 (size = 428, compat size = 428, section max = 100, section in-use = 4,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 11, numrecs = 100)
DATA FILE #1:
  (name #7) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:128 scn: 0x0000.00111793 05/17/2011 07:38:56
-- 對該檔案執行檢查點次數為 128,
 Stop scn: 0xffff.ffffffff 05/16/2011 07:39:49
-- 結束scn(Stop scn)是資料檔案的最後一個scn(資料庫正常關閉時會設定這個值),
資料庫正常開啟的狀態,該值為無窮大。 資料庫恢復時要求恢復到Stop scn。

 Creation Checkpointed at scn:  0x0000.00000009 08/30/2005 13:50:22
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  ...... 
  00000000 00000000 00000000 00000000 00000000 00000000
 Offline scn: 0x0000.00000000 prev_range: 0
--  檔案聯機時的檢查點scn作為聯機scn儲存在控制檔案中,由於系統表空間的
資料檔案永遠不能離線,所以系統資料檔案的離線scn應該為0x0000.00000000

 Online Checkpointed at scn:  0x0000.00000000
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  ......
  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
-- 熱備份end 記錄scn 

 aux_file is NOT DEFINED
DATA FILE #2:
  (name #6) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\UNDOTBS01.DBF
creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1
 tablespace 1, index=2 krfil=2 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:91 scn: 0x0000.00111793 05/17/2011 07:38:56
 Stop scn: 0xffff.ffffffff 05/16/2011 07:39:49
 Creation Checkpointed at scn:  0x0000.00081f74 08/30/2005 17:25:44
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
 ......
  00000000 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
  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  ......
  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
DATA FILE #3:
  (name #5) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\SYSAUX01.DBF
creation size=0 block size=8192 status=0xe head=5 tail=5 dup=1
 tablespace 2, index=3 krfil=3 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:128 scn: 0x0000.00111793 05/17/2011 07:38:56
 Stop scn: 0xffff.ffffffff 05/16/2011 07:39:49
 Creation Checkpointed at scn:  0x0000.000017d4 08/30/2005 13:50:49
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
  .....  
  00000000 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
  .....
  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
DATA FILE #4:
  (name #4) D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST01\USERS01.DBF
creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1
 tablespace 4, index=4 krfil=4 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:127 scn: 0x0000.00111793 05/17/2011 07:38:56
 Stop scn: 0xffff.ffffffff 05/16/2011 07:39:49
 Creation Checkpointed at scn:  0x0000.00002629 08/30/2005 13:51:05
 thread:0 rba:(0x0.0.0)
 enabled  threads:  00000000 00000000 00000000 00000000 00000000 00000000
  ......
  00000000 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
  ....... 
  00000000 00000000 00000000 00000000 00000000 00000000
 Hot Backup end marker scn: 0x0000.00000000
 aux_file is NOT DEFINED
 

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

相關文章