三招助你作好Oracle數據庫備份測試
做者: Victor, 出處:IT專家網, 責任編輯: 包春林, 2009-05-11 09:34
數據庫備份是保障數據庫
安全的重要手段之一。絕大部分數據庫管理員都已經發現對數據庫進行備份的重要性,甚至對其具備很大的依賴性。
數據庫備份是保障數據庫安全的重要手段之一。絕大部分數據庫管理員都已經發現對數據庫進行備份的重要性,甚至對其具備很大的依賴性。爲此數據庫管理員必需確定備份策略確實可靠。一個沒有通過測試的備份策略其實比沒有進行備份更加糟糕,由於它會給各位數據庫管理員一種假的安全感。
可是筆者發現很多的數據庫管理員在遇到服務器故障時,卻不時的會遇到沒法順利利用故障文件恢復數據庫或者數據庫備份文件不完整等問題。這主要是由於你們只注重數據庫的備份策略,可是卻忽視了數據庫備份文件的測試策略。若是備份文件不完整或者出現錯誤的話,那麼及時備份策略制定的再好,也是竹籃子打水一場空。爲此筆者在這裏鄭重建議你們,數據庫備份測試策略與數據庫備份策略同樣的重要。那麼作爲
Oracle數據庫管理員,該如何作好這方面的測試工做呢?對此筆者有一家幾個招數,或許可以幫助你們解決這方面的問題。
招數一:模擬各類現實中可能出現的問題。
不少緣由會致使數據庫服務器罷工,而這些罷工頗有可能形成數據庫中現有數據的損壞。爲此數據庫管理員必需憑藉本身的經驗列舉出現實中可能出現的故障狀況。而後針對這些可能發生的故障,去測試現有備份策略可否有效的應對。
如筆者給企業部署完Oracle數據庫以後,通常都會模擬各類現實中可能出現的問題。而後針對這些問題進行一一測試。如筆者會在一個更新事務處理的過程當中,忽然關閉電源。而後再從新啓動數據庫服務器,查看此次斷電事故對服務器可能形成哪些影響?可否利用現有的備份文件與日誌文件把數據庫中的數據恢復到斷電的那一個點上?如筆者還會測試用戶錯誤的更新了大量的數據,而且已經遞交了事務。此時須要測試看看可否利用重作日至文件來恢復更新以前的數據?如企業若是採用了磁盤陣列的話,那麼筆者還須要測試磁盤陣列的有效性。如把某一塊硬盤拿掉,添加上一塊新的硬盤,看看其數據庫服務器可否正常恢復數據。總之一句話,經過模擬各類失敗以及從這些失敗中進行恢復,看看可否恢復到故障發生時的點。這些測試工做將會給數據庫管理員得到書本上沒有的無價經驗。
具體來講,筆者認爲數據庫管理員在模擬失敗時,如下幾個失敗的緣由不可以放過。一是服務器忽然斷電,這可能致使配置文件的錯誤致使沒法訪問或者數據的丟失;二是重作日誌發生損壞,這可能致使數據庫管理員沒法把數據恢復到故障發生時的點;三是硬盤發生故障而致使數據丟失,這主要是要測試備份文件異地存放的有效性;四是數據批量更新的錯誤處理,這主要是測試數據庫管理員在進行批量更新以前是否有先對數據庫進行備份的習慣,等等。數據庫管理員只有預先模擬現實中各類可能出現的問題,並獲得解決方案。只有如此,在真正遇到這些問題的時候,數據庫管理員纔可以臨危不亂,迅速解決故障。
固然這些測試最好是可以在另一臺主機上進行測試。在生產服務器上進行這些破壞性測試的話,可不是一個明智的作法。
招數二:須要詳細記錄備份與還原測試的數據。
筆者建議數據庫管理員,不管你作了哪些測試,測試的工做是否充分,都須要一五一十的記錄下相關的備份與還原測試數據。由於這些故障可能隨時發生。到那個時候可沒有時間讓數據庫管理員去研究分析該如何處理。那時若是數據庫管理員有相似文檔的話,那麼只要按照相關文檔去處理,就能夠減小中間思考的時間,能夠迅速利用備份文件與日誌文檔進行數據庫恢復做業。
具體來講,筆者認爲數據庫管理員在測試的時候須要記錄以下內容。
一是須要記錄遇到故障時還原所須要用到的文件以及基本的操做步驟。如當發生硬盤故障時,此時須要恢復故障硬盤中的數據,須要用到哪些文件(可能須要用到保存在其餘硬盤上的備份文件與重作日誌文件),以及一些操做步驟。記錄這些內容有利於數據庫管理員在遇到問題的時候迅速找到這些文件而且熟練的應用這些文件進行數據庫的恢復做業。
二是須要記錄備份或者恢復過程當中遇到的意外事件。雖然只是模擬失敗,可是這個故障以及解決故障過程當中出現的意外事件,在實際工做中頗有可能會出現。而數據庫管理員在遇到這些意外事件時可否輕鬆應對則是考驗數據庫管理員能力的地方。筆者在平常工做中,對於這些意外事件不管大小都會一一的進行記錄,而且對於如何解決這些意外也會作相關的說明。要知道,這些內容但是數據庫管理員的無價之寶,由於這些東西在任何教科書上或者講座上都是學不到的。只要在模擬過程當中經歷了一次失敗,數據庫管理員就應該把當時的狀況以及若是處理這種意外事件的解決方案加入到你的工做筆記中。必須切記,意外事件每每不會只發生一次,它頗有可能在將來的某個時刻再次發生。養成及時更新本身的工做筆記的習慣,有利於數據庫管理員提升自身的水平,提升應對意外事件的能力。
三是要勤於跟其餘這方面的專家進行交流。如筆者常常會逛各類論壇。在論壇上,有些數據庫管理員會把本身遇到的問題在上面列出來,有很多就是在備份或者恢復過程當中出現的一些意外事件。這些意外事件有些是數據庫管理員之前遇到過的,而有些則是因爲工做經驗限制沒有遇見過的。可是頗有可能在之後的工做中爲碰到。爲此數據庫管理員須要預先去了解、收集這些別人碰到的問題,並在可能的狀況下模擬這些意外事件,並尋求解決方案。由於別人遇到的意外狀況,極可能咱們本身在下次也可能會遇到。防範與未然,提前想好解決措施。有利於咱們在遇到這些問題時,迅速採起有力的措施解決。
招數三:測試,測試,再測試。
俗話說,熟能生巧。若是數據庫管理員瞭解了意外事件,也知道該如何處理。可是若是由於不熟悉相關的操做,則極可能會由於操做不當而形成新的意外事件或者形成不可挽回的損失。因此數據庫管理員在工做比較空的時候,須要對這些解決方案進行測試。一來是看看隨着數據庫版本的升級,這些解決方案是否仍然有效;二是提升本身操做的熟練程度,確保之後在遇到相似故障時可以萬無一失的進行操做。
爲了達到這個目的,筆者對本身提出了以下幾個要求。
一是當數據庫新版本出來以後,須要對工做筆記中記錄下的解決方案進行測試,以判斷這些解決方案是否過時。沒有過時最好,若是過時了的話,則必須解決它。如須要考慮這些意外事件在新版中是否仍然會出現。若是仍然會出現的話,則就要在新版本功能的基礎上尋找新的解決方案。有些意外事件則可能會隨着數據庫版本的升級而被解決掉。故數據庫管理須要隨着數據庫版本的升級而不斷的進行測試,以提升相關解決方案的時效性。
二是給企業部署完成新的解決方案以後,須要挑選一些重要的內容進行測試。如筆者給企業部署完成Oracle數據庫(採用磁盤陣列)。若是要模擬全部的失敗狀況並測試相關對解決方案是否可行是不現實的,由於這須要花費很長的時間,得不償失。此時筆者會挑選一些重要的或者常常發生的意外狀況,並測試相關的解決方案是否可行。同時,這也是對企業用戶的一種
培訓,以提升他們獨立自主解決問題的能力。如對於上面這個案例,筆者會跟數企業用戶一塊兒,進行磁盤陣列有效性的測試。如換一塊新的硬盤以後看看數據庫服務器是否會自動恢復相關的數據。把企業用戶培養起來了,那麼咱們數據庫管理員也能夠輕鬆不少。 三是對於一些新的解決方案也須要進行測試。如筆者平時比較喜歡逛論壇。在論壇上有人提出一個問題,後面有不少數據庫管理員會把相關的方案寫出來。這些方案有些多是數據庫管理員已經知道了的;有些則是他們尚未想到的。此時數據庫管理員須要對新的方案進行測試,由於也許這個新的解決方案可以在更短期內解決故障。 以上幾個要求就是筆者平常工做中在備份還原測試方面對本身提出的幾個要求。你們若認爲以爲合理的話,則也能夠這麼去作。