控制檔案的結構
控制檔案的結構(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 類檔案結構_class類檔案的的結構
- 檔案的邏輯結構、檔案目錄
- PE 檔案結構圖
- 檔案系統的物理結構分配
- 表`t`的INODE結構檔案分析
- 深入解析Class類檔案的結構
- Linux下的檔案系統結構Linux
- PE檔案結構解析3
- PE檔案結構解析2
- PE檔案結構解析1
- PE檔案結構複習
- MachO 檔案結構詳解Mac
- REdis AOF檔案結構分析Redis
- 表`t`的XDES Entry結構檔案分析
- uboot版本檔案結構的更新改變boot
- 例項分析JAVA CLASS的檔案結構Java
- 深入 LevelDB 資料檔案 SSTable 的結構
- 二、Linux檔案系統結構Linux
- PostgreSQL DBA(15) - WAL檔案結構SQL
- Oracle 控制檔案Oracle
- Android Manifest.xml檔案的結構及作用AndroidXML
- struts2的工作原理與檔案結構
- 再探.NET的PE檔案結構(安全篇)
- OBJ模型檔案的結構、匯入與渲染OBJ模型
- Java IntelliJ IDEA 不能顯示專案裡的檔案結構JavaIntelliJIdea
- 位元組碼檔案結構詳解
- JVM學習--Class類檔案結構JVM
- Class檔案結構&位元組碼指令
- EXE檔案結構及讀取方法
- Linux檔案系統目錄結構Linux
- linux檔案系統的目錄結構筆記Linux筆記
- 位元組碼檔案的內部結構之謎
- 深入理解JVM(五)Class類的檔案結構JVM
- 2.6.4 指定控制檔案
- Java虛擬機器——類檔案結構Java虛擬機
- Java Class檔案結構例項分析(下)Java
- Java Class檔案結構例項分析(上)Java
- python程式的三種控制結構Python
- class檔案的基本結構及proxy原始碼分析二原始碼