Oracle數(shù)據(jù)庫的物理存儲結構之數(shù)據(jù)庫控制文件詳解
Oracle數(shù)據(jù)庫中,數(shù)據(jù)庫控制文件維護著數(shù)據(jù)庫的全局物理結構,用以支持數(shù)據(jù)庫成功的啟動和運行。創(chuàng)建數(shù)據(jù)庫時,同時就提供了與之對應的數(shù)據(jù)庫控制文件。在數(shù)據(jù)庫使用過程中,Oracle不斷的更新數(shù)據(jù)庫控制文件,所以只要數(shù)據(jù)庫是打開的,數(shù)據(jù)庫控制文件就必須處于可寫狀態(tài)。如果,猶豫某些原因控制文件不能被訪問,那么數(shù)據(jù)庫也就不能正常的工作了。
每一個控制文件只能與一個Oracle數(shù)據(jù)庫相關聯(lián)。數(shù)據(jù)庫控制文件包含了數(shù)據(jù)庫實例的啟動和正常操作時,訪問數(shù)據(jù)庫所需的關于數(shù)據(jù)庫的信息。數(shù)據(jù)庫控制文件的內容只有Oralce可以修改,數(shù)據(jù)庫管理員和用戶都不能對其進行編輯。
控制文件包含了以下信息:
- 數(shù)據(jù)庫名稱
- 數(shù)據(jù)庫創(chuàng)建的時間戳
- 相關的數(shù)據(jù)文件、重演日志文件的名稱和位置
- 表空間信息
- 數(shù)據(jù)文件脫機范圍
- 日志歷史
- 歸檔日志信息
- 備份組和備份塊信息
- 備份數(shù)據(jù)文件和重演日志信息
- 數(shù)據(jù)文件拷貝信息
- 當前日志序列數(shù)
- 檢查點(checkpoint)信息
數(shù)據(jù)庫名稱和時間戳源自數(shù)據(jù)庫創(chuàng)建之時,數(shù)據(jù)庫名稱或是來自DB_NAME初始化從參數(shù),或者來自Cteate Database語句使用的名稱。
每當數(shù)據(jù)文件或重演日志文件被添加內容、重新命名或者直接從數(shù)據(jù)庫刪除時,控制文件都要進行更新以反應物理結構的變化。記錄下這些變化后,Oracle就可以:
在數(shù)據(jù)庫啟動的時候,能夠確定并打開數(shù)據(jù)文件和重演日子文件。
在必須要恢復數(shù)據(jù)庫的時候,能夠確定哪些文件是必須的、哪些文件是可用的。
PS:如果數(shù)據(jù)庫的物理結構發(fā)生了改變(使用了Alert Database語句),用戶應該立刻備份控制文件。
控制文件還記錄了關于檢查點的信息。每3秒,檢查點進程(CKPT)就會在控制文件里記錄重演日志文件的檢查點位置信息。這些信息用于數(shù)據(jù)庫的恢復過程,告訴數(shù)據(jù)庫在這一點之前的已經記錄下的重演條目不必進行恢復,因為它們已經被寫入數(shù)據(jù)文件了。
由于控制文件對數(shù)據(jù)庫的至關重要,所以聯(lián)機存儲著多個副本。這些文件一般存儲在各個不同的磁盤上,以便將因磁盤試下哦引起的潛在危險降至最低程度。Oracle支持對同一個數(shù)據(jù)庫并發(fā)的打開、書寫多個相同的控制文件。通過為一個數(shù)據(jù)庫在不同的磁盤上保存多個控制文件,可以幼小的降低對于控制文件可能發(fā)生的單點失敗。例如,包含一個控制文件的磁盤崩潰了,如果Oracle試圖訪問這個被破壞的文件,當前實例就會失敗,但是如果在不同的磁盤上保存了當前控制文件的復件,就可以重啟一個實例而無需進行數(shù)據(jù)庫恢復。
如果一個數(shù)據(jù)庫所有的控制文件在操作的時候都丟失了,那么數(shù)據(jù)庫實例就會失敗,必須要進行介質恢復(media recover)。但是介質恢復必須要使用一個稍微舊一點的控制文件的備份,因為當前的控制文件備份不可用。所以為了保護控制文件,必須要注意以下幾個方面:
每一個數(shù)據(jù)庫都要使用多路復制的控制文件;
把每一個控制文件的復件保存在不同的物理磁盤上;
使用操作系統(tǒng)的鏡像機制;
監(jiān)控備份。
關于Oracle數(shù)據(jù)庫的物理存儲結構之數(shù)據(jù)庫控制文件的知識就介紹到這里了,希望本次的介紹能夠給您帶來一些收獲,謝謝!
【編輯推薦】