1. 程式人生 > >Oracle 11g 管理控制文件

Oracle 11g 管理控制文件

存儲 mark 數據字典 重新 恢復 日誌 覆蓋 發生 復制

oracle數據庫控制文件是非常重要的文件,它是數據庫創建的時候自動生成的二進制文件,其中記錄了數據庫的狀態信息,主要包括以下內容

? 數據庫的名稱,一個控制文件只能屬於一個數據庫

? 數據庫創建時間

? 數據文件的名稱、位置、聯機、脫機狀態信息

? 重做日誌文件的名稱、位置及歸檔信息

? 所有表空間信息

? 當前日誌序列號

? 最近檢查點信息

控制文件在數據庫啟動的Mount階段被讀取,在數據庫啟動時首先使用默認規則找到並打開參數文件,在參數文件中含有控制文件的位置信息,打開控制文件後,會通過控制文件中記錄的各種數據庫文件的位置打開數據庫,從而啟動數據庫到可用狀態。當成功啟動數據庫後,在數據庫的運行過程中,數據庫服務器可以不斷的修改控制文件中的內容,所以在數據庫被打開的階段,控制文件必須是可讀寫的。但是其他任何用戶都無法修改控制文件,只有數據庫的實例才可以修改控制文件中的信息。

查看控制文件信息,可以從V$controlfile視圖中查看控制文件信息,控制文件名稱
技術分享圖片
除了從V$controlfile視圖查看控制文件信息外,還可以從V$parameter視圖中查看
技術分享圖片

如何查看控制文件中所存的內容信息

可以使用V$controlfile_record_section
技術分享圖片
查看V$controlfile_record_section中type,record_size,records_total,records_used
技術分享圖片
從截圖當中可可以看到控制文件中存放了創建數據庫的信息、重做日誌信息、數據文件及歸檔日誌文件記錄等信息。這些有價值的信息用於數據維護和管理,很多數據字典視圖是從控制文件中獲得的信息。

存儲多重控制文件

由於控制文件非常重要,所以要求控制文件不能只有一個,通常數據庫中控制文件要多於3個,並且存放在不同的磁盤上,這種使用控制文件的方法也稱為控制文件的多路復用。實現多重的一個方法就是通過復制控制文件到多個位置並修改初始化參數文件中的CONTROL_FILES參數,使之包含所有控制文件名稱。需要註意,當存在多個控制文件時,oracle會同時更新所有的控制文件,但是僅對CONTROL_FILES中所列舉的第一個控制文件進行讀取操作。

舉例說明實現多路復用控制文件的方法:

數據庫狀態為打開狀態,修改SPFILE中的CONTROL_FILES參數
技術分享圖片
技術分享圖片
關閉數據庫
技術分享圖片
使用操作系統命令將文件復制到新的位置

技術分享圖片
重新啟動實例
技術分享圖片
備份控制文件

備份控制文件

為了確保數據庫的安全,在數據文件或日誌文件位置信息發生變化時,例如新增數據文件到表空間時,對控制文件進行備份。有兩種備份方式:備份為二進制文件和備份為腳本文件

舉例說明備份為二進制文件的方法:

備份控制文件之前先查看當前系統中存在幾個控制文件
技術分享圖片

備份控制文件
技術分享圖片
修改系統參數文件
技術分享圖片
關閉數據庫之後啟動數據庫之後報ORA-00214錯誤,原因是控制文件版本不一致導致的

control01.ctl控制文件版本是817, control02.ctl的版本是806.
技術分享圖片
使用control01.ctl覆蓋control03.ctl,使得控制文件版本保持一致即可。
技術分享圖片
關閉數據庫
技術分享圖片
在重新啟動數據庫就可以了技術分享圖片

恢復控制文件

假設CONTROLD_FILES所指定的控制文件已經損壞,但在數據字典中還能訪問控制文件,則可以采用下面的步驟進行恢復:

關閉數據庫實例
技術分享圖片
刪除控制文件
技術分享圖片
啟動數據庫
技術分享圖片
此時數據庫的狀態是
技術分享圖片
用操作系統將完好的控制文件覆蓋掉損壞的控制文件
技術分享圖片
關閉當前數據庫
技術分享圖片
重新啟動數據庫實例
技術分享圖片
如果對此文有什麽問題的話,請加下面微信一起探討
技術分享圖片

Oracle 11g 管理控制文件