控制文件是Oracle資料庫中一種非常重要的文件。 在Oracle資料庫中主要包括:數據文件、控制文件和重做日誌文件。在數據文件中存儲資料庫中的數據,包括各種資料庫對象及其數據。在重做日誌文件中存放用戶執行DML及DDL命令的記錄。 在控制文件中存放資料庫的結構信息。具體來說,在控制文件中包含以下重 ...
控制文件是Oracle資料庫中一種非常重要的文件。
在Oracle資料庫中主要包括:數據文件、控制文件和重做日誌文件。
在數據文件中存儲資料庫中的數據,包括各種資料庫對象及其數據。
在重做日誌文件中存放用戶執行DML及DDL命令的記錄。
在控制文件中存放資料庫的結構信息。
具體來說,在控制文件中包含以下重要信息:
·資料庫的名稱。
·數據文件和重做日誌文件的位置和名稱。
.當前日誌序列號。
·檢查點信息。
·表空間的名稱。
•RMAN 的備份與恢覆信息。
控制文件是一個二進位文件,用戶不能修改與查看這個文件的內容。
資料庫伺服器在啟動時需要讀取這個文件的內容,以便打開資料庫。
為了使大家理解控制文件的重要性,首先介紹資料庫伺服器的啟動過程。
這個過程分為以下三個階段。
第一個階段,啟動到NOMOUNT狀態,資料庫伺服器根據參數文件的內容在記憶體中建立SGA ,並啟動DBWR 、LGWR等後臺進程。
在這一階段,實例將被啟動。
第二階段,啟動到MOUNT狀態。
資料庫伺服器根據參數文件中記錄的控制文件信息,打開控制文件。
第三階段,啟動到OPEN狀態,資料庫伺服器根據控制文件中記錄的信息,打開數據文件和重做日誌文件,這時資料庫伺服器可正常運行並處理用戶的請求。
由此可見,控制文件是實例和資料庫之間的樞紐,如果控制文件丟失或損壞,資料庫伺服器將無法正常啟動。
正因為控制文件具有特殊的重要性,在創建資料庫之後,或者在對資料庫的結構進行修改之後,都應該及時備份控制文件。
控制文件的規劃
因為控制文件具有特殊的重要性,所以對控制文件的數目和存放位置必須進行詳細的規劃。
控制文件的數目和位置在創建資料庫時就已經確定,在資料庫伺服器運行的過程中也可以根據需要進行修改。
控制文件的鏡像
在一個資料庫中至少需要一個控制文件。
如果控制文件丟失或損壞,將導致資料庫伺服器無法啟動。
為了防止這種情況,在資料庫中需要創建多個控制文件,這些控制文件互為鏡像,內容完全相同。
控制文件的鏡像是通過初始化參數control_files實現的。
例如,通過這個參數指定三個控制文件:
control_files=('D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL'
);
當資料庫伺服器啟動時,只需要讀取第一個控制文件的內容,而當資料庫的結構發生變化時,被修改的信息必須同時寫入所有的控制文件。
如果其中二個控制文件不可用,那麼資料庫伺服器將無法正常運行。
在這種情況下,資料庫管理員需要修改初始化參數control_files 的值,刪除其中不可用的控制文件,然後重新啟動資料庫伺服器。
假設控制文件control01.ctl損壞或丟失,初始化參數control_files可修改為:
alter system set control_files='D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL', 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL' scope=spfile;
控制文件的存放位置
為了保證控制文件的安全,在創建控制文件時一個基本的要求是對它進行鏡像。
但如果把所有控制文件存放在同一個磁碟上,危險仍然潛在。
如果磁碟損壞,那麼所有的控制文件都將丟失。
因此,控制文件應該分別存放在不同的磁碟上(註意,不是同一塊硬碟的不同磁碟分區)。
控制文件在多個磁碟上的鏡像情況如圖所示。
例如可將前面使用的二個控制文件分別存放在二個磁碟上,然後修改初始化參數CONTROL_FILES 。
ALTER SYSTEM SET control_files='D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL',
'E:\CONTROL03.CTL' SCOPE=spfile;
註:因為只有一個磁碟,就是用不同分區代替不同磁碟,實際上應該放在不同磁碟上。
如果要改變控制文件的名稱或位置,首先應該關閉資料庫伺服器,然後在操作系統中將控制文件複製到指定的位置,如果必要,可同時修改文件名。
然後修改初始化參數control_fies的值,使其指向修改後的控制文件,最後重新啟動資料庫伺服器。
現在的資料庫一般都存儲在磁碟陣列上,這種存儲設備本來就通過冗餘機制保證文件的安全,這時候把所有的控制文件存放在同一個存儲位置下即可。
需要註意的是,在這種情況下,多個控制文件仍然是有必要的。
如何重新創建控制文件
控制文件是在創建資料庫時自動創建的,在資料庫伺服器運行的過程中,除了鏡像控制文
件外,重新創建控制文件的機會不是很多。但是一旦有這樣的要求,就意味著對資料庫要進行
一次重要的操作。一般說來,重新創建控制文件的時機有以下幾種情況:
·控制文件全部損壞,並且沒有可用的備份。
·修改資料庫的名稱。
·修改某些永久性參數。
當然,重新創建控制文件並不是一件輕鬆的事情。如果沒有周密的計劃,可能會造成更大
的損失。在創建控制文件之前,必須掌握所有數據文件和重做日誌文件的名稱、位置和大小等
信息,在必要時還需要掌握資料庫所使用的字元集。為了防止對數據文件和重做日誌文件造成
不必要的損壞,儘可能對這些文件進行→次備份。