控制檔案的結構
控制檔案的結構(1)
控制檔案分為檔案頭和內容兩部分。檔案頭包含:
控制檔案塊大小
控制檔案包含的塊的數量
在MOUNT資料庫的時候,會讀取控制檔案的頭塊,並進行校驗。如果校驗失敗,資料庫會報錯。初始化引數DB_BLOCK_SIZE確定了資料庫的預設塊大小。資料庫預設塊大小就是控制檔案的塊大小。
要操作控制檔案,首先要獲得排他性的CF ENQUEUE。在控制檔案的最開頭的記錄使資料庫資訊。這部分資訊佔210位元組,佔用一個控制檔案塊。控制檔案的所有資訊都有備份。在同一個控制檔案中,每個控制檔案記錄都有備份記錄,每個邏輯塊都有兩個物理塊來儲存資料,一個物理塊儲存當前的資訊,另外一個物理塊儲存的是早期版本的資訊,或者一個仍然沒有被確定,等待提交的資訊。為了知道每個邏輯塊對應的物理塊中儲存的是最新的資料,Oracle維護了一個關於塊版本的點陣圖資訊,這個點陣圖儲存在控制檔案的第一條記錄中。
要從控制檔案中讀取資料,會話需要首先讀取塊版本點陣圖,以確定去讀取哪些物理塊,然後如果要對某個邏輯塊進行更改,首先寫入儲存非當前版本的物理塊,然後透過原子操作,重寫塊版本點陣圖。如果要對某個控制檔案塊的多條記錄進行修改,比如說修改每個線上檔案的CHECKPOINT SCN,這些資訊首先被儲存在緩衝中,達到一定數量的時候一次性寫入。要注意的是,每個控制檔案事務需要至少4次對控制檔案的序列的IO操作,如果一次修改了多個邏輯塊,那麼可能需要更多次IO。如果有備份的控制檔案並系統不支援非同步IO,也會造成多次IO。因此來說,控制檔案事務是一種開銷十分大的操作。
當控制檔案事務完成後,控制檔案序列號會增長。這個序列號和塊版本點陣圖以及資料庫資訊項一起儲存在控制檔案的第一條記錄中。這個序號被存放在每個控制塊的緩衝頭中。如果多個控制檔案中的序列號不同,資料庫會提示一個ORA-235錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-667727/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 體系結構-控制檔案(二)Oracle
- Oracle 體系結構-控制檔案(一)Oracle
- 類檔案結構_class類檔案的的結構
- 關於控制檔案的總結
- 控制檔案丟失恢復例項(2) - 控制檔案備份後物理結構未變化
- oracel體系結構梳理----控制檔案以及pfile和spfile
- oracle 控制檔案的修復小結Oracle
- 控制檔案丟失恢復例項(1) - 控制檔案備份後物理結構發生變化
- BMP檔案結構
- 【控制檔案】映象控制檔案
- 檔案的邏輯結構、檔案目錄
- linux下的檔案結構Linux
- ODBC檔案DSN 的結構 (轉)
- PE 檔案結構圖
- Class類檔案結構
- wsdl檔案結構分析
- Linux檔案結構Linux
- BMP檔案結構 (轉)
- oracle結構梳理---歸檔檔案Oracle
- 深入解析Class類檔案的結構
- 表`t`的INODE結構檔案分析
- 控制結構
- MachO 檔案結構詳解Mac
- REdis AOF檔案結構分析Redis
- PE檔案結構複習
- PE檔案結構解析3
- PE檔案結構解析1
- PE檔案結構解析2
- JAVA Class類檔案結構Java
- 清空檔案下的SVN控制檔案
- 控制檔案的跟蹤檔案全文
- 控制檔案
- 使用舊的控制檔案備份來恢復控制檔案
- uboot版本檔案結構的更新改變boot
- 例項分析JAVA CLASS的檔案結構Java
- 深入 LevelDB 資料檔案 SSTable 的結構
- SQLServeronLinux的檔案和目錄結構SQLServerLinux
- Linux下的檔案系統結構Linux