Oracle閃回資料歸檔

llnnmc發表於2017-05-19

從Oracle 11g開始,提供了一個這樣的功能:閃回資料歸檔(Flashback Data Archive)。透過這一功能,Oracle資料庫可以將UNDO資料進行歸檔,從而提供全面的歷史資料查詢,也因此引入一個新的概念:Oracle Total Recall,即Oracle全面回憶。閃回資料歸檔可以和我們一直熟悉的日誌歸檔類比,日誌歸檔記錄的是REDO的歷史狀態,用於保證恢復的連續性。而閃迴歸檔記錄的是UNDO的歷史狀態,可以用於對資料進行閃回追溯查詢。後臺程式LGWR用於將REDO資訊寫出到聯機日誌檔案,ARCH程式負責寫出到歸檔日誌,而在Oracle 11g中新增的後臺程式FBDA(Flashback Data Archiver Process)則用於對閃回資料進行歸檔寫出。

前面講述的閃回功能都有時間限制:閃回資料庫受閃回日誌空間大小及保留時間的限制,閃回查詢受撤銷表空間及保留時間的限制,閃回刪除受表空間可用空間的限制。而閃回資料歸檔則可以配置長期的儲存錶行資料的前映像,甚至可以儲存多年。FBDA會確保儲存該時間點之前的所有資料,超出儲存時間之前的資料會自動維護刪除。這對於像司法和審計方面的需求尤其適用,閃回資料歸檔透明的支援了這種做法,DBA能夠保證符合法律要求而不需要做任何額外的工作。

對於繁忙的資料庫,閃回資料儲存顯然要耗用更多的磁碟空間和時間。當然使用者可以根據需要,僅對部分表啟用閃回資料歸檔,從而滿足特定的業務需求。

配置閃回資料歸檔的基本步驟:
建立一個表空間,然後建立歸檔,指定表空間、保留時間及表空間配額:
create tablespace fda datafile 'd:\oradata\mes\fda01.dbf' size 10g;
create flashback archive default fa tablespace fda quota 10g retention 1 year;

其中fa是建立的閃迴歸檔名,fda是為歸檔建立的表空間,default關鍵字表示除非另行說明,該歸檔將用作所有表的歸檔。也可以稍後設定預設的歸檔:
alter flashback archive fa set default;

quota子句顯示歸檔在表空間中佔用的配額。還可以在原有的表空間或另一個表空間中擴充套件更多的空間:
alter flashback archive fa add tablespace fda2 quota 10g;

也可以調整閃迴歸檔的保留時間:
alter flashback archive fa modify retention 2 year;

那麼一旦資料超過了指定的保留期限,FBDA後臺程式將自動從歸檔中刪除過期的資料。在資料過期之前,也可以手動進行刪除,如:
alter flashback archive fa purge before timestamp to_timestamp('2015-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss');

建立、修改或刪除歸檔以及控制歸檔的保留和清除,需要flashback archive administer系統許可權,歸檔表的使用者必須授予flashback archive的許可權:
grant flashback archive administer to cmes;
grant flashback archive on fa to rmes;

為了啟用表的歸檔保護,使用如下命令:
alter table rmes.r_wip_station_t flashback archive fa;

如要刪除表的歸檔保護,可以使用如下命令:
alter table rmes.r_wip_station_t no flashback archive;

如要刪除閃回資料歸檔,則可用以下命令:
drop flashback archive fa;

加入到閃回資料歸檔的表、表空間、使用者是受保護不允許刪除的,除非先將歸檔保護刪除。

另外,有三個資料字典檢視記錄了閃回資料歸檔的配置資訊:

dba_flashback_archive,描述了配置的歸檔

col flashback_archive_name for a30
select owner_name, flashback_archive_name, flashback_archive#, retention_in_days, to_char(create_time, 'yyyy-mm-dd hh24:mi:ss') create_time, status from dba_flashback_archive;

OWNER_NAME                     FLASHBACK_ARCHIVE_NAME         FLASHBACK_ARCHIVE# RETENTION_IN_DAYS CREATE_TIME         STATUS
------------------------------ ------------------------------ ------------------ ----------------- ------------------- -------
SYS                            FA                                              1               365 2017-01-29 22:31:29 DEFAULT

dba_flashback_archive_ts,顯示了每個表空間為閃迴歸檔分配的配額

col flashback_archive_name for a30
col quota_in_mb for a20
select * from dba_flashback_archive_ts;

FLASHBACK_ARCHIVE_NAME         FLASHBACK_ARCHIVE# TABLESPACE_NAME                QUOTA_IN_MB
------------------------------ ------------------ ------------------------------ --------------------
FA                                              1 FDA                            1024

dba_flashback_archive_tables,列出了啟用閃迴歸檔的表

col archive_table_name for a30
select * from dba_flashback_archive_tables;

TABLE_NAME                     OWNER_NAME                     FLASHBACK_ARCHIVE_NAME         ARCHIVE_TABLE_NAME             STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------
R_WIP_STATION_T                RMES                           FA                             SYS_FBA_HIST_98694             ENABLED


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2139608/,如需轉載,請註明出處,否則將追究法律責任。

相關文章