控制文件
控制文件擴展名通常爲 ctl,其在Oracle數據庫中具有及其重要的作用,如果該文件損壞或者丟失,那麼數據庫將無法正常啓動
即使是正在運行的數據庫也會立即出錯關閉,其原因在於控制文件記錄了數據庫的物理結構信息
數據庫啓動以及運行過程中的物理存儲結構變化都需要讀寫該文件
控制文件是二進制類型的文件,用戶不能使用記事本工具直接編輯,而需要通過 Oracle 相關進程進行自動更新
創建控制文件
數據庫創建時會同時自動創建控制文件,當控制文件損壞或者丟失,同時又沒有備份的情況下需要用戶手工創建控制文件
create controlfile
[reuse] database db_name
[logfile redofiles_list]
[datafile datafiles_list]
[maxlogfiles]
[maxlogmembers]
[maxinstances]
[maxdatafiles]
resetlogs|noresetlogs
[archivelog|noarchivelog]
對參數介紹如下
- reuse:指定原有控制文件能被覆蓋使用,如果忽略該參數並且同時已存在控制文件,則創建控制文件將出錯
- db_name:爲需創建控制文件的數據庫名稱
- redofiles_list:爲重做日誌文件列表,包括各文件的存儲路徑
- datafiles_list:爲數據文件列表,包括各文件的存儲路徑
- maxlogfiles:設置重做日誌文件最大數量
- maxlogmembers:設置重做日誌文件組的最大成員數量
- maxinstances:設置數據庫的最大實例個數
- resetlogs|noresetlogs:表示不使用原有重做日誌文件或使用原有重做日誌文件
- archivelog|noarchivelog:表示設置數據庫爲歸檔模式或非歸檔模式
控制文件的備份與恢復
Oracle 數據庫中用於控制文件備份語句爲
alter database backup controlfile
該語句有兩種可選的備份方式:一種是將控制文件備份爲一個二進制文件,另外一種是備份爲純文本形式的文件
//備份爲二進制文件
alter database backup controlfile to 'D:\test.ctl';
//備份爲文本文件
alter database backup controlfile to trace;
當控制文件備份爲文本文件時,該備份文件也被稱爲追蹤文件,保存在 spfile 中文件的參數 user_dump_dest 所指定路徑,該追蹤文件實際爲 SQL 腳本文件,可以利用它來重新創建控制文件
刪除控制文件
如果某個控制文件失效則可以刪除該控制文件,但要注意不能將控制文件全部刪除,至少要保留一個,否則數據庫將無法啓動
通過編輯初始化參數 control_files,可以去掉要刪除控制文件信息,然後在操作系統中將控制文件手動刪除
查詢控制文件信息
可以使用 show parameter 命令顯示初始化參數 control_files 的設置信息
show parameter control_files;
此外,可以通過查詢與控制文件相關的一系列動態性能視圖獲取相關信息,這些視圖包括
- v $ controlfile:包含所有控制文件基本信息
- v $ controlfile_record_section:包含控制文件的各個記錄文檔段的信息
- V $ parameter:包含系統所有初始化參數,從中可以查詢參數 control_files 的值