Oracle 11g閃回資料歸檔新功能解析
簡介
Oracle資料庫10g提供了五個新的閃回功能:閃回版本查詢,閃回事務查詢,閃回刪除,閃回表和閃回資料庫。Oracle資料庫11gR1提供了一個有趣的新的閃回功能:閃回資料存檔,它允許一個Or acle資料庫管理員維護一個記錄,對指定時間範圍內對所有表的的改變情況進行記錄。
許多年前-事實上,在上個世紀-我是一名美國大西部飲料生產廠家人力資源系統的承包商。有一天,人力資源總監問我:“如何為我們的僱員資料配置一個delta表,使我們能夠跟蹤所有對僱員資料的更改情況?”出現在我腦袋中的答案就像最近的美國總統大選期間CNN用來顯示和分析投票結果的“神奇地圖”一樣:
我想建立一個名為EMPLOYEES_HISTORY的表,除了增加了一個相應的時間戳記的日期和時間的變化外,它與Employees表的列完全一樣。
我希望把這個新表放在一個單獨的表空間。
我想套用外來鍵參照完整性約束EMPLOYEES_HISTORY表,以確保兩個表之間的資料一致。
最後,我想建立一個AFTER ... FOR EACH ROW觸發器,無論何時在Employees表上發生INSERT,UPDATE或DELETE事務時,都將在EMPLOYEES_HISTORY表中插入delta記錄。
然後一些潛在的問題開始縈繞著我,這樣做了會發生什麼,我不停地問我自己,如果某人:
禁用了EMPLOYEES_HISTORY表上的觸發器,並且忘記重新開啟了,會發生什麼事情?
需要向EMPLOYEES表中增加新列,或修改資料型別,但忘記同步修改EMPLOYEES_HISTORY表上對應的列了,會發生什麼?
雖然同時對EMPLOYEES和EMPLOYEES_HISTORY表做了一致的修改,但忘記修改觸發器了,會發生什麼?
如果需要刪除EMPLOYEES表的列或將其標記為UNUSED時,會發生什麼?
意外TRUNCATE掉EMPLOYEES_HISTORY表時會發生什麼?
意外刪除了EMPLOYEES_HISTORY表時會發生什麼?甚至更糟糕的是刪除了EMPLOYEES表時會發生什麼?
這些問題的簡單答案是,如果真發生了這些事情,我不得不向客戶解釋為什麼弄丟了EMPLOYEES_HISTORY表中的delta資料。
用閃回資料歸檔實現Oracle“完全撤銷”
如果我擁有Oracle 11g,我會直接告訴客戶我花幾分鐘就能恢復資料,Oracle 11gR1新的閃回資料歸檔(FBDA)功能建立一個獨立的倉庫保留表中資料改變的歷史記錄。
FBDA資訊儲存在一套獨立的物件中,跟蹤目標表的事務歷史,這些物件儲存在一個或多個表空間中,FBDA表的名稱是由系統自動產生的,可以通過檢視DBA_FLASHBACK_ARCHIVE_TABLES檢視,一旦在表上開啟了FBDA,所有保留的事務歷史都可以檢視,這樣就不用再為關鍵事務表建立對應的歷史跟蹤表了,那樣做很麻煩,因為建立歷史跟蹤表後,還有編寫複雜的觸發器,確保歷史資料被精確跟蹤。
歷史資訊的捕捉也是非常高效的,因為Oracle 11g專門修改了核心,使保留歷史資料的效能開銷減到最小,此外,這些歷史資料以壓縮格式儲存,減少了儲存的需要,另外,只要在表上開啟了FBDA,Oracle 11g就不會再對歷史資料做使其無效的操作(如刪除或清空目標表)或阻止捕捉(如刪除目標表的列)。
下面解釋一下FBDA是如何工作的:
閃回資料歸檔(FBDA)是一個新的後臺程式,負責跟蹤和歸檔開啟了FBDA的錶的歷史資料,它通過非同步處理自動收集和向指定的閃回資料歸檔寫入原始資料。
當開啟FBDA的表中任何資料發生變化時,FBDA首先詢問儲存在資料庫緩衝區中的UNDO資料,如果資料仍然在那裡,FBDA就會使用它,如果UNDO資料已經從資料庫緩衝區中移除,FBDA就會嘗試從UNDO表空間中的UNDO段中獲取資料發生的變化。
當FBDA捕捉到變化資料時,它會整理開啟FBDA的表中的行,然後將這些行寫入FBDA中的歷史表,這些表資料經過壓縮,就和內部分割槽一樣。
有趣的是,FBDA不包括捕獲資料的原始索引,當在FBDA中可以對歷史資料建立另一個索引。
自動保留策略:按照類似的保留需求,可以將FBDA物件中的歷史表資料聚集在一起,Oracle 11g也提供了自動清理FBDA中資料的方法,一旦超出了指定的保留期限就會自動執行清理工作,多個表可以共享同一個資料保留和清理策略,因為FBDA是由一個或多個表空間構成的,所以可以建立多個FBDA,每個FBDA指定不同的保留期限,這樣就可以建立多個FBDA滿足不同需求的保留策略,下面是一些常見的示例:
為普通的短期歷史查詢保留90天
為普通的長期歷史查詢保留1整年
為國家法律需要保留20年
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14766526/viewspace-567155/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g 閃回資料歸檔Oracle
- [zt] Oracle 11g 閃回資料歸檔Oracle
- Oracle閃回資料歸檔Oracle
- 11g閃回資料歸檔
- 11g新特性--Oracle 11g 閃回資料歸檔Oracle
- 【Flashback】11g的閃回資料歸檔初探
- Oracle 11g新特性--閃回資料歸檔(flashback data archive)[zt]OracleHive
- 清除閃回資料歸檔區資料
- 關於oracle閃回資料歸檔的總結Oracle
- 閃回資料歸檔-- Flashback Data ArchiveHive
- Oracle 11g 閃回資料庫Oracle資料庫
- Oracle 11g 閃迴歸檔Oracle
- 【oracle 】閃回與歸檔位置的理解Oracle
- 開閃回及閃迴歸檔
- Oracle閃回技術之閃回資料庫Oracle資料庫
- Oracle 11G 閃回技術 使用Oracle閃回查詢Oracle
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle資料庫閃回Oracle資料庫
- Oracle閃回資料庫Oracle資料庫
- Oracle 11g 閃回表Oracle
- RAC資料庫啟用歸檔和閃回的步驟資料庫
- Oracle資料庫的閃回恢復區及多歸檔路徑的設定Oracle資料庫
- Oracle 11g 閃回刪除Oracle
- Oracle 11g 閃回查詢Oracle
- Oracle 11G 閃回技術 使用閃回版本查詢Oracle
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- 【Flashback】啟用閃回資料庫功能需要在歸檔模式下完成資料庫模式
- Oracle 閃回資料庫測試Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- Oracle 11g 閃回版本查詢Oracle
- 【備份恢復】 閃回技術之閃迴歸檔
- 閃回(關於閃回資料庫)資料庫
- 閃回與歸檔引數的設定
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle
- Oracle 11g資料庫改為非歸檔模式Oracle資料庫模式
- Oracle 11G 閃回技術 使用Oracle閃回事務查詢Oracle
- Oracle 11g開啟閃回功能FlashbackOracle
- Oracle 11G 閃回技術概覽Oracle