出於對資料庫的資料安全來講,exp這個命令對大多數使用Oracle的人來講(尤其是資料庫管理員)並不陌生,這個exp命令可以完成對資料庫資料進行多樣備份,如全庫,特定使用者,特定表等其他方式。類似的命令還有expdb,兩個唯一的不同點是expdb匯出時會顯示匯出的資料大小,而exp則沒有。這裡主要分析的不是exp命令怎麼用,而是分析exp命令匯出的資料是否存在問題。
exp備份資料什麼時候做最合適?國際性應用(或通訊應用)資料庫如何備份?
要回答第一個問題需要瞭解以下內容,我們知道oracle資料庫啟動的過程包括以下步驟:
1、startup nomount 讀取oracle的spfile,初始化資料庫執行個體;
2、alter database mount 讀取控制檔案,;
3、alter database open 根據資料庫控制檔案配置載入資料庫執行個體,以及根據控制檔案中儲存的記錄檔資訊進行資料庫一致性校正並處理,進行執行個體恢複,資料庫載入成功後對外提供服務。
在資料庫open狀態進行exp方式備份的情況下,我們備份的資料區塊也存在被寫的可能,從而導致備份的資料區塊與實際的資料區塊存在差異,資料的一致性問題,即資料模糊性。我們理解在某個時刻匯出的資料備份能體現備份當時的資料資訊,也就是說備份資料是當時資料的一份快照,實際上並非如此。為了最大限度的保證備份資料的一致性,我們往往會採取淩晨(此時的業務操作會很少甚至沒有)執行資料庫的備份,就此回答了為什麼Database Backup要在淩晨做。我們做測試開發的時候對資料的一致性要求不是很高,只要滿足我們最低的要求(開發應用能正常運行,不需要或不要業務資料)就可以了。
國際性應用(或通訊應用)資料庫的備份如何做?面臨是全球性訪問使用,業務資料的產生時間是隨機的,任何時候進行資料備份都存在資料一致性問題。為解決這個問題,需使用oracle提供的rman進行備份。rman與exp有什麼不同?exp備份的是資料庫物件,只備份了其中的資料部分,對設定檔,控制檔案和記錄檔都不做備份,而通常這樣的備份是最危險的;exp備份操作簡單,rman備份比較複雜(需要掌握的知識比較多,文法規則多)。
基於以上的分析,建議以後多用rman進行Database Backup。需要對資料庫重要檔案進行備份,設定檔,控制檔案以及記錄檔;並對備份檔案進行不週期性校正,確定備份檔案有效;
以上是個人的分析總結,僅做參考。存在錯誤或不完整的地方後續再補充,存在不足的地方望能指正。