Oracle與SQL Server在數據備份與恢復上的差異
來源:程序員人生 發布時間:2014-06-04 16:28:36 閱讀次數:3483次
【本站據T專家網獨家報道】在講解兩者的具體差異之前,筆者要先談談幾個跟備份相關的概念。先了解這幾個概念,對于了解這兩個數據庫在數據備份上的差異,具有重大意義。
第一個概念是數據庫完全備份。備份數據庫中的所有數據,不論數據庫有否更新。換句話說,不論數據庫最近有否更新過,數據庫備份程序都會對數據內容進行備份;并且,把數據屬性都更新為已經備份。一般來說,在實際工作中,對數據庫的基礎結構更改或者大批量數據更新過后,不管有否其他的備份策略,都最好進行一次數據庫的完全備份。
第二個概念是數據庫差異備份。備份上一次完全備份后有變化的數據。差異備份是基于完全備份;備份上一次完全備份后發生變化的所有文件。如我們的備份策略是星期六做一個完全備份,其他每天做一個差異備份。則下周星期一會備份上周星期六以后數據庫所有變化的數據;而下周星期五的差異備份則會備份上周星期六完全備份以來的所有變化的數據內容。可見,差異備份的起點永遠是上次完全備份后的時間。
第三個概念是數據庫增量備份。增量備份其備份的是上一次備份(包括完全備份、差異備份、增量備份)之后變化的所有數據。增量備份是指針對任何一次備份而言的。如我們現在的備份策略是星期六進行一次完全備份,其他則每天進行一次增量備份。則星期三備份的是上一次備份,也就是星期二備份后變化的數據。而不是從星期六完全備份以后發生的所有數據更新內容。所以,數據差異備份與數據增量備份兩者還是具有比較大的區別。
一、兩個數據庫在實例與介質備份恢復上的差異。
現在由于各種技術文檔翻譯不統一,所以在具體的概念上有所區別。Oracle數據庫中,對于數據庫備份的三種類型分別叫做完全備份、差異增量備份與累計增量備份。其中,差異增量就是我們上面所說的增量備份;而累計增量則是我們上面所提到的差異備份。為了前后文的統一,在下面的闡述中,筆者還是利用差異備份與增量備份這兩個名詞。
首先,在Oracle數據庫中有實例恢復與介質恢復的區別。實例故障是指數據庫系統本身發生故障,如操作系統錯誤、意外斷電、非法關機、后臺進程故障或者使用shutdown abort終止數據庫實例所發生的故障。一般來說,實例恢復是數據庫系統自動完成的。當出現實例故障時,再次重啟數據庫后,由數據庫系統根據重作日志文件記錄的內容,如可能在故障發生的時候,還有一些未提交的事務、或者已提交但是還沒有完成的事務,根據這些內容自動完成實例恢復。到目前的版本為止,SQL Server數據庫還沒有實例恢復的概念。
介質恢復主要用于介質故障引起的數據庫文件的破壞。當某個數據庫文件、或者一個文件中的某些內容、或者當出現了一個磁盤壞區、或者數據庫被病毒等破壞導致數據丟失等等,遇到這些情況時就需要采用介質恢復。介質恢復必須由數據庫管理員手工完成最新數據庫備份和日志文件備份的裝入,并執行各種恢復命令才能夠恢復。介質恢復,在SQL Server中,就是數據備份與數據恢復。也就是說,兩個數據庫在這方面的差異,主要在于微軟的SQL Server數據庫還沒有“實例恢復”的概念,或者說還沒有形成“實例恢復”這一個體系,雖然其在技術上實現了“實例恢復”的部分功能。
二、兩個數據庫在備份類型上的差異。
根據備份時機的不同,數據庫備份可以分為脫機備份與恢復、聯機備份與恢復、邏輯備份與恢復等。
脫機備份與恢復,有些專家又成為冷備份與恢復,他是指在關閉數據庫的情況下對數據庫文件進行物理備份與恢復,這是一種最原始、最簡單、最直接的數據庫備份與恢復的方法。在脫機備份之前,數據庫管理員需要確保數據庫能夠有足夠長的時間停留在脫機狀態,以便進行完全備份與恢復。因為在脫機備份的過程中,任何人都不能夠連到數據庫。現在兩個數據庫都支持脫機備份與恢復功能。
聯機備份與恢復,有人也把它稱為熱備份與熱恢復,它是指在數據庫正常使用的過程中,對數據進行備份與恢復。對于Oracle數據庫來說,如果要實現聯機備份與恢復,則數據庫必須處于歸檔模式之下。而對于SQL Server數據庫來說,則沒有這種要求。對SQL Server數據庫來說,只要設置了聯機備份策略,則數據庫會自動進行調整,以符合連接備份與恢復的條件。另外,Oracle的聯機備份與恢復功能,實現起來比較復雜,必須比微軟的數據庫投入更多的時間和精力來測試備份與恢復策略。不過相對來說,其靈活性要高。
邏輯備份與恢復則是Oracle數據庫特有的功能。邏輯備份與恢復指的是利用Oracle數據庫提供的工具,如導入導出工具、數據泵工具,將數據庫中的數據進行備份或者恢復。邏輯備份與恢復其實是一整套解決方案,利用這個方案,可以實現不同操作系統之間的數據傳遞。假設現在有一個部署在微軟操作系統之上的Oracle數據庫,現要把這個數據庫中的內容移值到Linux操作系統之上的Oracle數據庫中去,就可以利用這個方案來進行解決。因為利用邏輯備份所導出的數據文件,是采取Oracle格式的二進制文件,其中不包括操作系統的信息,所以,可以在不同操作系統平臺上的Oracle數據庫之間直接傳輸數據。另外還可以利用這個技術,實現Oracle不同數據庫版本之間的轉換工作。如我們需要把低版本的數據庫升級到高版本的數據庫中,我們就可以利用這門技術,將低版本數據庫中的數據泄出,然后裝入另一個高版本的數據庫中。不過,若要從高版本的數據庫裝入到低版本的數據庫中,則還需要一些額外的工作。不過,邏輯備份與恢復很多功能都是為Oracle數據庫系統的跨平臺性能所涉及的,如在不同操作系統上的數據庫之間實現數據的直接交換等等。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈