什么是控制文件?
每個ORACLE數據庫都有一個控制文件??刂莆募且粋€小型的二進制文件,它可以記錄數據庫的物理結構,其中包含以下內容:
數據庫名稱
相關的數據文件和聯機重做日志文件的名稱和位置
數據庫創建的時標
當前日志的序號
檢驗點信息
無論何時打開數據庫,控制文件必須能夠由ORACLE數據庫服務器寫入內容。沒有控制文件,數據庫就不能裝載。
在不同的磁盤上復用控制文件
每個ORACLE數據庫都應該至少有兩個控制文件,它們分別存儲在不同的磁盤上。當一個磁盤失敗導致控制文件損壞,可以由另一個恢復損壞的控制文件。
依據數據庫初始化參數文件中的初始化參數CONTROL_FILES列出的所有文件名,ORACLE會將相應的內容寫入到所有這些控制文件中。
初始化參數CONTROL_FILES中列出的第一個文件是ORACLE數據庫服務器在數據庫運行期間惟一可以讀取的文件。
在整個數據庫運行期間,如果任何一個控制文件變為不可用,那么實例就不能再繼續運行,而且應該中止這個實例。
聯機重做日志多路復用:將控制文件的副本存儲在每個存儲有聯機重做日志組成員的磁盤上,可以盡量減少在一個磁盤的失敗中丟失所有控制文件和所有聯機重做日志組的風險。
當發布CEATE DATABASE語句中,會創建ORACLE數據庫的初始控制文件。
以下情況需要備份控制文件:1,添加、取消或重命名數據文件;2,添加或撤消表空間或者更改表空間的讀寫狀態;3,添加或取消重做日志文件。 方法:關閉數據庫,將現在控制文件復制到另一位置。重啟數據庫。
以下情況需要創建新的控制文件:1,所有數據庫的控制文件都損壞,且沒有備份;2,想改變其中某個數據庫參數的永久性設置,這些參數最初是在CREATE DATABASE語句中指定的。
創建一個新的控制文件:
1, 制作一個包含數據庫的所有數據文件和聯機重做日志文件的列表。
在數據庫能正常打開時,產生以下列表!
select member from v$logfile;
select name from v$datafile;
select value from v$parameter where name='control_files';
2, 關閉數據庫
shutdown
3, 備份數據庫的所有數據文件和聯機重做日志文件。
4, 啟動一個新的實例,但是不要裝載或打開數據庫:
STARTUP NOMOUNT;
5, 使用CREATE CONTROLFILE語句為數據庫創建一個新的控制文件。
在丟失了聯機重做日志組、或者重命名了數據庫必須指定RESETLOGS選項。
6, 在離線存儲設置上存儲新控制文件的備份。
7, 為數據庫編輯CONTROL_FILES初始化參數,以便指出現在所有控制文件都是第5步創建的數據庫的一部分。
8, 如果有必要可以恢復數據庫。
9, 打開數據庫。
備份控制文件:
1,將控制文件備份為二進制文件(現有控制文件的復制品)
ALTER DATABASE BACKUP CONTROLFILE TO ‘g:\JYSH\BAK\CONTROL.BAK';
2,制作以后可用于重新創建控制文件的SQL語句:
alter dtatbase backup controlfile to trace;
此命令將SQL腳本寫入數據庫的跟蹤文件,在這個跟蹤文件中可以找到這個SQL腳本并對腳本進行編輯,以重新產生控制文件。