以下的文章主要介紹的是Oracle 11g 閃回?cái)?shù)據(jù)歸檔,Oracle 11g 閃回?cái)?shù)據(jù)歸檔這一功能可以把UNDO數(shù)據(jù)進(jìn)行相關(guān)實(shí)際歸檔,以下就是相關(guān)內(nèi)容的介紹。希望你在瀏覽完之后會(huì)有所收獲。
雖然ORA-01555錯(cuò)誤可以通過種種手段來避免和減少,但是隨著時(shí)間的流逝,這些UNDO信息總會(huì)失去,那么能否將這些信息保存起來,使得數(shù)據(jù) 庫在一定的歷史周期之內(nèi)可以不斷向后追溯,使得我們可以看到一個(gè)數(shù)據(jù)表在任意歷史時(shí)間點(diǎn)上的切片呢?
從Oracle Database 11g開始,Oracle 提供了一個(gè)這樣的功能:閃回?cái)?shù)據(jù)歸檔(Flashback Data Archive)。通過這一功能Oracle數(shù)據(jù)庫可以將UNDO數(shù)據(jù)進(jìn)行歸檔,從而提供全面的歷史數(shù)據(jù)查詢,也因此Oracle引入一個(gè)新的概念 Oracle Total Recall,也即Oracle全面回憶功能。
閃回?cái)?shù)據(jù)歸檔可以和我們一直熟悉的日志歸檔類比,日志歸檔記錄的是Redo的歷史狀態(tài),用于保證恢復(fù)的連續(xù)性;而閃回歸檔記錄的是UNDO的歷史狀 態(tài),可以用于對(duì)數(shù)據(jù)進(jìn)行閃回追溯查詢;后臺(tái)進(jìn)程LGWR用于將Redo信息寫出到日志文件,ARCH進(jìn)程負(fù)責(zé)進(jìn)行日志歸檔;在Oracle 11g中,新增的后臺(tái)進(jìn)程FBDA(Flashback Data Archiver Process)則用于對(duì)閃回?cái)?shù)據(jù)進(jìn)行歸檔寫出:
- [oracle@sp3: ~]$ps -ef | grep fbda | grep -v grep
- oracle 3251 1 0 Jan07 ? 00:00:11 ora_fbda_ccdb
閃回歸檔數(shù)據(jù)甚至可以以年為單位進(jìn)行保存,Oracle 11g可以通過內(nèi)部分區(qū)和壓縮算法減少空間耗用,這一特性對(duì)于需要審計(jì)以及歷史數(shù)據(jù)分區(qū)的環(huán)境尤其有用,但是注意,對(duì)于繁忙的數(shù)據(jù)庫環(huán)境,閃回?cái)?shù)據(jù)存儲(chǔ)顯 然要耗用更多的存儲(chǔ)空間。當(dāng)然,用戶可以根據(jù)需要,對(duì)部分表進(jìn)行閃回?cái)?shù)據(jù)歸檔,從而滿足特定的業(yè)務(wù)需求。
因?yàn)殚W回?cái)?shù)據(jù)歸檔需要獨(dú)立的存儲(chǔ),所以在使用該特性之前需要?jiǎng)?chuàng)建獨(dú)立的ASSM(自動(dòng)段空間管理)表空間:
- sys@TQGZS11G> create tablespace fbda datafile
'/oracle/oradata/tqgzs11g/FBDA.dbf' size 200M
segment space management auto;- Tablespace created.
然后可以基于該表空間創(chuàng)建閃回?cái)?shù)據(jù)歸檔區(qū),F(xiàn)LASHBACK ARCHIVE ADMINISTER系統(tǒng)權(quán)限是創(chuàng)建閃回?cái)?shù)據(jù)存檔所必需的,此處使用SYS用戶進(jìn)行:
sys@TQGZS11G> create flashback archive fda tablespace fbda retention 1 month;- Flashback archive created.
此后就可以使用該歸檔區(qū)來記錄數(shù)據(jù)表的閃回?cái)?shù)據(jù)量。為了測試方便,先將UNDO表空間更改為較小,以使得UNDO數(shù)據(jù)能夠盡快老化:
- 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
接下來使用測試用戶連接,對(duì)測試表執(zhí)行閃回歸檔設(shè)置,F(xiàn)LASHBACK ARCHIVE對(duì)象權(quán)限是啟用歷史數(shù)據(jù)跟蹤所必需的:
- 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.
取消對(duì)于數(shù)據(jù)表的閃回歸檔可以使用如下命令:
- alter table table_name no flashback archive;
上述的相關(guān)內(nèi)容就是對(duì)Oracle 11g 閃回?cái)?shù)據(jù)歸檔的描述,希望會(huì)給你帶來一些幫助在此方面。