在Windows操作系統中,如果注冊表文件被損壞了,就會影響操作系統的穩定性。嚴重的話,會導致操作系統無法正常啟動。而控制文件對於Oracle數據庫來說,其作用就好象是注冊表一樣的重要。如果控制文件出現了意外的損壞,那麼此時Oracle數據庫系統很可能無法正常啟動。為此作為Oracle數據庫管理員,務必要保證控制文件的安全。
在實際工作中,數據庫管理員可以通過備份控制文件來提高控制文件的安全性。但是筆者認為這是下下之策。因為當控制文件出現損壞時,通過備份文件來恢復的話,會出現數據庫在一段時間內的停機。為此筆者建議各位數據庫管理員最好還是采用多路復用來保障控制文件的安全。在采用多路復用的情況下,當某個控制文件出現損壞時,系統會自動啟用另外一個沒有問題的控制文件來啟動數據庫。所以說不會出現停機的狀況。
一、控制文件多路復用的特點。
多路復用的原理其實很簡單,就是在數據庫服務器上將控制文件存放在多個磁盤分區或者多塊硬盤上。數據庫系統在需要更新控制文件的時候,就會自動同時更新多個控制文件。如此的話,當其中一個控制文件出現損壞時,系統會自動啟用另外的控制文件。只有當數據庫管理員運氣比較背的時候,即所有控制文件都出現損壞,此時數據庫就無法正常啟動了。不過只要將控制文件多路復用在多塊硬盤上,一般來說控制文件一起損壞的紀律很小。所以采用多路復用控制文件可以在很大程度上提高控制文件的安全性。最重要的是,在控制文件轉換的過程之中,不會有停機現象的產生。
所以通過把控制文件存放在不同的硬盤上,數據庫管理員就能夠避免數據庫出現單點故障的風險。當采用多路復用技術啟用多個控制文件時,數據庫在更新控制文件時會同時更新這些控制文件。雖然有時候這可能會讓數據庫對控制文件的修改花費更多的時間,但是相對於風險來說,這點時間上的投資還是值得的。再說只要硬盤的性能比較好,那麼這個時間的影響是很少的,甚至可以忽略不計。不過在采用多路復用的時候,最好不要將控制文件防止在網絡上的服務器中。有時候如果系統在更新控制文件時剛好碰到網絡性能不好甚至網絡中斷的情況下,那麼這個控制文件的更新就需要耗用比較長的時間。如在Windows操作系統下安裝Oracle數據庫的話,其默認情況下就啟用了多路復用技術。不過這個多路復用技術不怎麼合理。其將其余的兩個控制文件副本保存在同一個分區的同一個目錄下。萬一這台服務器的硬盤出現了故障,由於控制文件保存在同一個硬盤中,為此多路復用就失去了意義。為此最好將控制文件保存在不同的硬盤中,以提高控制文件的安全性。
二、在Windows平台上如何實現控制文件多路復用。 本來Oracle數據庫有三個控制文件,分別保存在同一目錄中。筆者現在在另一個硬盤分區上放置了一個控制文件,實現了多路復用。如此的話,即使前面兩個控制文件損壞了,那麼數據庫也會立即啟用第三個控制文件來啟動數據庫。在Windows操作系統下要實現多路復用控制文件是比較簡單的,只需要通過幾個簡單的步驟就可以完成。
第一步:修改系統參數control_files。在Oracle數據庫系統中,是通過這個初始化參數來打開控制文件的。即這個初始化參數中指定有多少個控制文件,分別存放在那裡,到時候數據庫就會更新多少控制文件。不過需要注意的是,一般數據庫在使用時,只打開一個控制文件。所以要啟用多路復用時,首先需要使用ALTER SYSTEM命令來設置這個初始化參數,以便在管理員指定的位置添加控制文件。其具體格式為ALTER SYSTEM control_files ‘控制文件1’,’控制文件2’。需要注意的是,這裡的控制文件都需要使用絕對路徑。
第二步:關閉數據庫以及相關服務。這個初始化參數設置以後,還需要關閉數據庫以及相關服務後才能夠進行下一步的操作。所以最好在數據庫投入生產使用之前,就做好控制文件多路復用的准備。否則後續再進行調整的話,就不得不付出數據庫停機的代價。使用shutdown命令關閉數據庫之後,還需要在操作系統的服務管理窗口中關閉相關的服務。
第三步:復制控制文件並改名。為了確保所有控制文件能夠互為鏡像,完全相同,最好能夠在關閉數據庫的情況下,將原先的控制文件復制到一個新的位置,然後進行重命名。注意這裡的位置與控制文件的名字,必須同第一步指定的路徑與名字相同。
第四步:重新啟動數據庫與相關的服務。啟動數據庫之後,需要注意手工啟動服務窗口中的相關選項。如果怕麻煩的話,那麼重新啟動一下操作系統,系統會在重新啟動的過程中自動啟用相關的Oracle數據庫服務。數據庫重新啟動之後,多路復用的控制文件就可以使用了。如果要確認一下原先的設置是否奏效,可以使用上圖所示的查詢語句來進行查詢。當使用ALTER SYSTEM參數更改完初始化參數之後,由於這個控制文件實際上還並不存在,為此利用這個語句來查詢的時候就查不到更改後的變化。復制控制文件並重新啟動數據庫系統後,所做的更改生效了。此時才可以通過這個查詢語句查找到起作用的控制文件。或者說,如果管理員實際復制了控制文件,但是在這裡查詢不到相應結果的話,則說明肯定是哪個地方出現了問題。此時系統工程師就要從頭開始來排除故障可能出現的原因。
三、在實現過程中的注意點。
顯然,要在Windows操作系統上實現控制文件多路復用的話,比較簡單。不過在具體的配置過程中,有一些細節方面的內容要引起管理員重視。
首先,在使用ALTER SYSTEM更改初始化參數的時候,一定要把原先的控制文件信息帶上。也就是說,默認情況下Oracle數據庫已經有了三個控制文件。如果數據庫管理員還還需要在其他硬盤上多采用兩個控制文件的話,那麼在ALTER SYSTEM語句中必須加入五條信息。也就是說,原先的控制文件信息必須也帶上。如果在這條語句中,數據庫管理員只帶上兩條新控制文件的語句的話,則數據庫系統會認為原先的三個控制文件都不要了,而直接采用後面加上的兩個控制文件來代替。為此筆者提醒各位數據庫管理員,在調整設置的時候千萬不要犯這個低級的錯誤。
其次需要考慮多路復用控制文件的存儲位置。像數據庫的默認設置,控制文件時存儲在同一個目錄中。這顯然並不是很安全。至少要將控制文件放置在不同的硬盤上或者分區上。具體來說,控制文件的每個副本都應該保存在不同的磁盤驅動器上。也就是說可以將控制文件的副本存儲在每個存儲有重做日至文件組組成員的硬盤驅動器上。不過有一點需要說明的是,最好不要將控制文件的副本保存在網絡主機上。這主要是因為系統會同時更新多個數據庫控制文件。如果網絡比較繁忙時,更新網絡主機上的控制可能會花費比較多的時間。可見,這個位置的選擇不僅關系到控制文件的更新速度,而且還關系到控制文件副本的安全性。為此在規劃數據庫的時候,也需要好好想想這個控制文件副本該存放在哪個地方合適。
第三需要注意的是,這個控制文件的默認存儲位置在不同的操作系統中是不同的。如在Linux操作系統與Windows操作系統中,雖然默認情況下都是三個控制文件,其中連個為控制文件的副本。但是他們存儲的路徑不同。為此如果要在不同的操作系統上復制控制文件時,就需要通過上面的查詢語句來查詢當前生效的控制文件。千萬不要憑感覺去找。因為即使你找到了控制文件,也不能夠保證這個控制文件是否有效的,是否包含了最新的內容。如果不是的話,則無法保證所有的控制文件都相同,無法確保所有控制文件能夠互為鏡像。