簡介
Flashback資料庫是一種時點(PIT)資料庫恢複的方式。這種不完全的恢複策略可以用於恢複由於人為錯誤導致邏輯損壞的資料庫。在10g中引入之後,它的設計目標就是以縮減恢復而獲得最大的可用性。
傳統恢複vs.重現資料庫
導致停機的第一個原因就是人為錯誤導致的邏輯損壞,這一點已經被廣泛承認。關於邏輯損壞的例子,從使用者不正確的更新資料和截取表,到批處理任務錯誤運行2次或者打亂順序,比比皆是。結果都是相同的——資料庫損壞,並且範圍廣闊且難以辨認。Oracle通過了兩種策略來將資料庫返回到先前的某個時點上:傳統恢複和重現資料庫。
不完全的恢複是資料庫恢複到先前某個狀態的恢複。這個過程有兩個步驟:重新儲存資料,並向前恢複事務活動到某個你想要的時間。傳統恢複和重現資料庫之間的主要區別就是,傳統恢複從重新儲存所有的資料檔案開始,然後才恢複到某個想要的恢復,而重現資料庫則是在損壞之後通過重新儲存被改變的塊來向後操作。從這個角度考慮問題的話,讓我們想想在一個10TB的資料庫上,有1MB的資料損毀了。傳統的恢複從開始重新儲存10TB的應用程式資料開始,而重現資料庫則是取回這1MB的應用程式資料,從而達到損壞前的那個點。現在我們分別看看每一種策略。
傳統恢複
在Oracle 10g之前,將由於人為錯誤導致問題的資料庫恢複到先前某個時點的唯一選項就是傳統恢複。這個策略包括了從備份中取出並重新儲存所有的資料庫資料檔案,然後再執行向前恢複到某個想要的時間點。媒體恢複可以基於伺服器(RMAN),也可以基於使用者(作業系統工具)。恢複通過從備份中重新儲存所有的資料檔案並且向前復原redo日誌到希望的時間點而完成。恢復與資料庫的規模成正比,而不是需要恢複的更改的數量。這就意味著恢復(MTTR)實際上隨著資料庫的規模增長而不斷增加。
重現資料庫
在Oracle 10g中,一項新的重現技術特性,稱為Flashback Database(重現資料庫)的,作為傳統恢複的替代品引入了。重現資料庫可以讓你快速恢複整個資料庫到先前的某個時間點,而不需要從備份中重新儲存資料庫。在資料庫中經常被描述為倒轉按鈕,它只是將那些被修改的資料區塊恢複到你希望的恢復之前。然後應用Redo更改記錄來達到希望的恢復點。這個被修改的資料區塊就叫做重現日誌。
重現資料庫提供了相對於傳統資料庫非常明顯的優勢。對於AnalyticDB則沒有這麼明顯的優勢。在資料倉儲中,塊的操作通常是以不記錄日誌的模式執行的。在重現資料庫中,只要資料庫啟動並執行是文檔記錄模式,它就可以返回到塊操作之前的某個狀態,因為被修改的塊可以通過恢複而撤銷執行的操作。