以下的文章主要介紹的是Oracle 11g 閃回數據歸檔,Oracle 11g 閃回數據歸檔這一功能可以把UNDO數據進行相關實際歸檔,以下就是相關內容的介紹。希望你在浏覽完之後會有所收獲。
雖然ORA-01555錯誤可以通過種種手段來避免和減少,但是隨著時間的流逝,這些UNDO信息總會失去,那麼能否將這些信息保存起來,使得數據庫在一定的歷史周期之內可以不斷向後追溯,使得我們可以看到一個數據表在任意歷史時間點上的切片呢?
從Oracle Database 11g開始,Oracle 提供了一個這樣的功能:閃回數據歸檔(Flashback Data Archive)。通過這一功能Oracle數據庫可以將UNDO數據進行歸檔,從而提供全面的歷史數據查詢,也因此Oracle引入一個新的概念Oracle Total Recall,也即Oracle全面回憶功能。
閃回數據歸檔可以和我們一直熟悉的日志歸檔類比,日志歸檔記錄的是Redo的歷史狀態,用於保證恢復的連續性;而閃回歸檔記錄的是UNDO的歷史狀態,可以用於對數據進行閃回追溯查詢;後台進程LGWR用於將Redo信息寫出到日志文件,ARCH進程負責進行日志歸檔;在Oracle 11g中,新增的後台進程FBDA(Flashback Data Archiver Process)則用於對閃回數據進行歸檔寫出:
- [Oracle@sp3: ~]$ps -ef | grep fbda | grep -v grep
- Oracle 3251 1 0 Jan07 ? 00:00:11 ora_fbda_ccdb
閃回歸檔數據甚至可以以年為單位進行保存,Oracle 11g可以通過內部分區和壓縮算法減少空間耗用,這一特性對於需要審計以及歷史數據分區的環境尤其有用,但是注意,對於繁忙的數據庫環境,閃回數據存儲顯然要耗用更多的存儲空間。當然,用戶可以根據需要,對部分表進行閃回數據歸檔,從而滿足特定的業務需求。
因為閃回數據歸檔需要獨立的存儲,所以在使用該特性之前需要創建獨立的ASSM(自動段空間管理)表空間:
- sys@TQGZS11G> create tablespace fbda datafile
'/Oracle/oradata/tqgzs11g/FBDA.dbf' size 200M
segment space management auto;- Tablespace created.
然後可以基於該表空間創建閃回數據歸檔區,FlashBACK ARCHIVE ADMINISTER系統權限是創建閃回數據存檔所必需的,此處使用SYS用戶進行:
sys@TQGZS11G> create Flashback archive fda tablespace fbda retention 1 month;- Flashback archive created.
此後就可以使用該歸檔區來記錄數據表的閃回數據量。為了測試方便,先將UNDO表空間更改為較小,以使得UNDO數據能夠盡快老化:
- sys@TQGZS11G> create undo tablespace UNDOTBS2_SMALL datafile '/Oracle/oradata/tqgzs11g/UNDOTBS2_SMALL.dbf' size 20M autoextend off;
- Tablespace created.
- sys@TQGZS11G> alter system set undo_tablespace= UNDOTBS2_SMALL;
- System altered.
- sys@TQGZS11G> show parameter undo
- NAME TYPE VALUE
- undo_management string AUTO
- undo_retention integer 900
- undo_tablespace string UNDOTBS2_SMALL
接下來使用測試用戶連接,對測試表執行閃回歸檔設置,FlashBACK ARCHIVE對象權限是啟用歷史數據跟蹤所必需的:
- sys@TQGZS11G> conn tq/tq
- Connected.
- tq@TQGZS11G> select TABLE_NAME from user_tables;
- TABLE_NAME
- T
- EMP
- tq@TQGZS11G> alter table t Flashback archive fda;
- Table altered.
取消對於數據表的閃回歸檔可以使用如下命令:
- alter table table_name no Flashback archive;
上述的相關內容就是對Oracle 11g 閃回數據歸檔的描述,希望會給你帶來一些幫助在此方面。