Oracle基礎資料結構
系列文章:Oracle恢複內部原理 http://www.bkjia.com/search.aspx?where=nkey&keyword=19824
2.1 控制檔案
控制檔案包含了資料庫中所有其他檔案的狀態資訊。
控制檔案包含了如下幾類資料:
A. 資料庫資訊記錄(一條)
B. 資料檔案記錄(每個資料檔案一條)
C. 線程記錄(每個線程一條。註:每個執行個體一個線程)
D. 記錄檔記錄(每個記錄檔一條)
E. 檔案名稱記錄(每個資料檔案或者記錄檔成員一條)
F. 日誌記錄(每個已經完成的記錄檔一條)
控制檔案的被後面文檔引用到的欄位如下,後面是引用該欄位的章節:
2.1.1 資料庫資訊記錄(控制檔案)
所含欄位:
A. resetlogs timestamp: 8.2
B. resetlogs scn: 8.2
C. enabled thread bitvec: 8.3
D. force archiving scn: 3.8
E. database checkpoint thread(thread record index) : 2.13, 3.10
2.1.3 資料檔案記錄(控制檔案)
A. thread checkpoint structure: 2.12, 3.4, 8.3
B. thread-open flag: 3.9, 3.11, 8.3
C. current log (logfile record index)
D. head and tail (logfile record indices) of list of logfiles in thread: 2.8
2.1.4 記錄檔記錄(控制檔案)
A. log sequence number: 2.7
B. thread number: 8.4
C. next and previous (logfile record indices) of list of logfiles in thread: 2.8
D. count of files in group: 2.8
E. low SCN: 2.7
F. next SCN: 2.7
G. head and tail (filename record indices) of list of filenames in group: 2.8
H. "being cleared" flag: 10.3
I. "archiving not needed" flag: 10.3
2.1.5 檔案名稱記錄(控制檔案)
A. filename
B. filetype
C. next and previous (filename record indices) of list of filenames in group: 2.8
2.1.6 記錄檔記錄(控制檔案)
A. thread number: 2.11
B. log sequence number: 2.11
C. low SCN: 2.11
D. low SCN timestamp: 2.11
E. next SCN: 2.11
2.2 資料檔案頭
資料檔案頭部分的被後面文檔引用的欄位如下,後面跟的是引用該欄位的章節:
A. datafile checkpoint structure: 2.14
B. backup checkpoint structure: 4.1
C. checkpoint counter: 2.16, 3.4, 5.3, 6.2
D. esetlogs timestamp: 8.2
E. resetlogs SCN: 8.2
F. creation SCN: 8.1
G. online-fuzzy bit: 3.5, 6.7.1, 8.1
H. hotbackup-fuzzy bit: 4.1, 4.4, 6.7.1, 8.1
I. media-recovery-fuzzy bit: 6.7.1, 8.1
2.3 記錄檔頭
記錄檔頭部分的被後面文檔引用的欄位如下,後面跟的是引用該欄位的章節:
A. thread number: 2.7
B. sequence number: 2.7
C. low SCN: 2.7
D. next SCN: 2.7
E. end-of-thread flag: 6.10
F. resetlogs timestamp: 8.2
G. resetlogs SCN: 8.2
2.4 改變向量(Change Vector)
改變向量表示對資料區塊的一次變更。改變向量頭部記錄了發生變更的資料區塊的DBA地址,該塊的版本號碼,序列值和作業碼。頭部以後的內容跟具體的變更操作有關。資料區塊版本號碼和序列值是在建立改變向量時從資料區塊的頭部複製過來的。當塊被更新後,版本號碼值就比原來的值大一點,而序號則被設為1。此後資料區塊每變更一次,序列值就增長1.
2.5 重做記錄
一個重做記錄是由一組改變向量組成,代表一個資料庫變更。如一個事務的重做記錄由三部分組成。首先是事務表(復原段段首)的改變向量,其次是復原段塊的改變向量,最後是資料區塊的改變向量。一個事務可以產生多個重做記錄組成。一個重做記錄是資料庫恢複的最小單位,一個重做記錄由多個改變向量組成的機制允許多個資料區塊被修改並且這些修改要麼都發生要麼就都沒發生,即使發生突然的失敗。這種原子性是由資料庫緩衝層的一個基礎Job來保證的。Oracle恢複保證重做記錄是不可分割的,即使在資料庫失敗的時候。