Oracle 控制檔案呢,是資料庫中最小的檔案,是一個二進位檔案,其中包括了資料庫的結構資訊,
同時也包括了資料檔案和記錄檔的一些資訊,控制檔案雖小,但可以說是 Oracle 中最重要的檔案,
只有 Oracle 進程才能夠更新控制檔案中的內容,
控制檔案中呢主要包括資料庫名稱,位置,聯機或者離線狀態,Redo Log File 的位置和名稱,
資料表空間名稱, Archive Log File 資訊,CheckPoint 資訊,Undo 資訊,RMAN 資訊等等,
從上面對控制檔案中包含的內容也可以看出控制檔案在整個 Oracle 中的重要性。
控制檔案的多工技術
何為控制檔案的多工技術呢?
由於控制檔案的重要性,Oracle 呢官方是建議至少應該擁有控制檔案的三個以上的副本,
而您可以通過多工技術,將控制檔案的複本建立到不同的磁碟上,
然後再修改初始化參數檔案 init . ora
(現在的 Oracle 版本中的參數基本上都是使用二進位的 spfile,只有個老版本的 Oracle 才使用 init.ora 檔案)
中的 control_files 參數,使之包含所有的控制檔案,
也就是將其他磁碟上的控制檔案也包含到這個 control_files 中,這樣的話,
這樣呢,有一個好處,
就是你的這個一個磁碟壞了,Oracle 仍然能夠快速的恢複,
一個控制檔案損壞了,還可以自動使用另一個控制檔案,
但是這裡要提一點的是,控制檔案並不是越多越好的,
因為當 Oracle 更新控制檔案時,會將所有的控制檔案全部進行更新,自然效能就有一定的影響了,
所以,
控制檔案的副本也不是越多越好的!!!
下面呢就介紹一下如何啟用多工技術了,
主要是針對於使用 spfile (System Parameter File)實現多工控制檔案,
(對於 init . ora 實質上也差不多)
首先來查看一下當前使用的控制檔案
上面的中可以看出當前的 Oracle 執行個體上有三個控制檔案,
也就是由三路複用吧(亂取的),
下面呢,我還加一個控制檔案,並且把控制檔案移到其他的目錄(以其他的目錄來虛擬一個磁碟)
第一步呢,修改 spfile 中的 control_files 這個屬性,為其增加兩個控制檔案資訊,
一個存放於虛擬磁碟 disk1 下,一個存放於虛擬磁碟 disk2 下
下面呢就是要關閉資料庫了,至於為什麼要關閉資料庫,在後面有說明的,
下面呢,就是 Ctl + C 了,也就是把控制檔案複製到指定的目錄上,
上面指定的是 disk1 和 disk2 ,所以在這裡呢,就是簡單的 Ctl + C 操作了
完成了之後呢,就重新啟動 Oracle 了
下面呢,就再使用 v$controlfile 來驗證上面的操作是否成功了,
從上面呢,就可以看出操作確實是成功了!!!
現在來解釋為什麼需要關閉 Oracle ?
因為考慮到如果您的 Oracle 是線上使用的話,
那麼這個 Oracle 上有可能還掛著很多的使用者或者是應用程式,
這些使用者的操作有可能是會改變控制檔案的,如果您不關閉 Oracle 就拷貝控制檔案,
那麼將會造成控制檔案不一致的情況,即控制檔案1中的資料內容和控制檔案2中的不一致,
這將是一個很嚴重的問題!!!