資料庫閃回技術在Oracle Database 10g就向大家提供了。因為閃回不需要對數據文件做restore的動作,所以數據恢復的時間相比傳統RMAN進行恢復要快許多。這項技術一直受到DBA的喜歡,比如經常可以使用表閃回,資料庫閃回快速修復人為造成的數據錯誤,也可以使用閃回查詢,了解記錄之前的狀態。但閃回技術不是萬能的,它也受到許多限制,但隨著資料庫版本的不斷更新,閃回功能在各個版本都得到了增強。
我們假設這樣的場景:今天是周三,我們發現某個PDB的數據出現人為錯誤,然後將這個PDB通過資料庫閃回技術,將資料庫閃回到周一,並使用resetlogs的方式打開這個PDB。閃回操作執行完成後,發現閃回的時間是錯誤的,不應該將這個PDB閃回到周一,而是應該閃回到周二。在Oracle Database 20c之前,如果出現上面的情況,恐怕就要使用其他技術對這個PDB進行恢復了。這也是為什麼,我們在使用閃回資料庫技術之前,我們先要進行查詢,確定正確的閃回時間點,否則就會出現如上圖所示,已經閃回到周一,再想閃回到周二就不可以了。
從20c開始,PDB的閃回功能得到了增強,即便是從周三閃回到了周一,也支持從周三閃回到周二。
接下來我們就通過實驗來驗證一下。
使用這項技術有三個前提條件:
1、資料庫啟動歸檔
2、資料庫開啟閃回
3、使用local undo我們還是使用之前實驗中所使用的Database 20c當中的pdb,名字為pdb1。假設我們在周一的時候,hr用戶下面有一個table,名字為fb_tab1,裡面有1000條記錄。
然後創建一個restore point名字叫做rp001。
接下來,我們向這個表中添加1000條記錄,認為是周二的數據情況,然後創建restore point名字為rp002。
使用同樣的方法,創建出周三的數據,然後創建restore point名字為rp003。
接下來,我們將PDB1關閉,然後閃回到第一個restore point:rp001,然後將資料庫以resetlogs方式打開。我們通過觀察,發現數據表中的記錄恢復到了1000條。
然後,我們再將資料庫PDB1,閃回到第二個restore point:rp002,這項操作在之前的版本中是不支持的,而從20c開始提供了很好的支持。我們看到數據表中的數據已經恢復到了restore point:rp002的狀態,有2000條數據。
如果您願意,可以將資料庫閃回到第三個restore point,這項操作在之前也是不支持的,而在20c當中是沒有問題的。
官宣:Oracle Database 20c(預覽版)雲端上線
Oracle Database 20c:區塊鍊表
Oracle Database 20c: In-Memory增強
Oracle Database 20c: JSON功能增強
Oracle Database 20c與DATA SAFE
Oracle Database 20c:In-Memory混合掃描
掃描下方QR Code即刻預約ADW演示
編輯:殷海英