Oracle Flashback Archive——Oracle閃迴歸檔(上)
Oracle Flashback閃回是從10g開始推出的一系列技術新特性。閃回Flashback的範圍很廣泛,包括Flashback Query、Flashback Database、Flashback Transaction和Flashback Drop等。
在之前的Blog系列《使用閃回拯救我們的資料》,筆者已經分析過Flashback閃回的一些特性。Flashback就是在不進行還原操作的情況下,將已經被commit或者ddl操作過的資料恢復過來。
Flashback借用多種技術來實現flashback的目標。Flashback存在一些問題和不適應性。比如:進行flashback的物件時間往往較短,而且不可控。另一方面,flashback的目標沒有針對性,對一些不需要進行flashback的資料表,也消耗資源進行flashback準備操作。
在Oracle 11g中,Oracle推出了flashback archive(閃迴歸檔)的新特性。Flashback Archive實現了有針對性資料表的可控時間閃回功能。我們可以設定一塊儲存空間區域,保留一個特定資料表在不同時間的資料映象。而且可以設定保留時間,沒有達到保留時間的時候,資料都會進行保留。
下面我們透過一系列的實驗來說明這些特性。
1、環境準備
我們選擇Oracle 11g進行測試,同時建立一個表空間mytest。表空間mytest選擇ASSM方式進行segment space management。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> create tablespace mytest datafile size 100m extent management local uniform. size 1m
2 segment space management auto;
Tablespace created
2、建立Flashback Archive空間
Flashback的其他特性,如flashback drop、flashback database,都是資料庫的預設選擇專案,基本不需要使用者進行指定和配置。如果不希望有這些配置專案,則可以透過引數配置開關進行關閉。
Flashback Archive是一種比較特殊的型別,需要我們進行一系列的配置工作。首先,我們在sys使用者下建立一個flashback archive儲存物件。
SQL> show user;
User is "SYS"
SQL> create flashback archive flar1 tablespace mytest retention 1 year;
Done
建立flar1物件作為使用的flashback archive,儲存使用的表空間為mytest,設定的保留年限為1年。
在建立flar1之後,我們可以在dba_flashback_archive、dba_flashback_archive_ts(dba_字首可以使用user等進行替換)查詢到閃回資訊。
SQL> select * from dba_flashback_archive;
OWNER_NAME FLASHBACK_ARCHI FLASHBACK_ RETENTION_IN_DAYS CREATE_TIME LAST_PURGE_TIME STATUS
---------- --------------- ---------- ----------------- -------------------- -------------------- -------
SYS FLAR1 1 365 05-9月 -11 11.07.43. 05-9月 -11 11.07.43.
000000000 上午 000000000 上午
SQL> select * from dba_flashback_archive_ts;
FLASHBACK_ARCHI FLASHBACK_ARCHIVE# TABLESPACE_NAME QUOTA_IN_MB
--------------- ---------- --------------- ----------------------------------------
FLAR1 1 MYTEST
3、設定具有閃迴歸檔功能的資料表
我們轉移到scott使用者下,進行閃迴歸檔演示。
SQL> conn scott/tiger@ora11g;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as scott
SQL> desc t;
Object t does not exist.
SQL> create table t as select * from dba_objects;
Table created
SQL> select count(*) from t;
COUNT(*)
----------
72226
之後,我們嘗試使用alter table xx flashback archive yyy的方法,將資料表與設定的閃迴歸檔區關聯上。
SQL> alter table t flashback archive flar1;
alter table t flashback archive flar1
ORA-55620: 無權使用閃迴歸檔
在scott普通使用者下,直接呼叫該命令是被拒絕的。使用設定閃迴歸檔,需要擁有flashback archive系統許可權。
--在sys使用者下
SQL> grant flashback archive on flar1 to scott;
Grant succeeded
--在scott使用者下
SQL> alter table t flashback archive flar1;
Table altered
此時,可以觀察到dba_flashback_archive_tables檢視的結果,建立了資料表T與flar1的關係。
SQL> select * from dba_flashback_archive_tables;
TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME ARCHIVE_TABLE_NAME STATUS
-------------------------- ----------------------------------------------- --------
T SCOTT FLAR1 SYS_FBA_HIST_88294 ENABLED
4、閃迴歸檔資料表
下面,我們分別在不同的時間點,對資料表進行DML操作,演示flashback archive特性。
--大規模DML操作前
SQL> select sum(bytes)/1024/1024 "USED MBs" from dba_free_space where tablespace_name='MYTEST';
USED MBs
----------
92
SQL> select count(*) from t;
COUNT(*)
----------
113346
SQL> select sysdate from dual;
SYSDATE
--------------------
2011/9/6 9:06:57
--進行大規模DML操作;
SQL> insert into t select * from dba_objects;
72233 rows inserted
SQL> commit;
Commit complete
SQL> select count(*) from t;
COUNT(*)
----------
185579
SQL> select count(*) from t as of timestamp to_timestamp('2011/9/6 9:06:57','yyyy/mm/dd hh24:mi:ss');
COUNT(*)
----------
113346
SQL> select sum(bytes)/1024/1024 "USED MBs" from dba_free_space where tablespace_name='MYTEST';
USED MBs
----------
75
上面的實驗,可以清晰的看出Flashback Archive的特點。從query語法上看,flashback archive與flashback query很相像,都是利用指定過去的一個時間點(timestamp,scn)進行查詢。但是,flashback query是利用undo的負效應,將沒有被覆寫的資料返回給使用者。這種方式首先是對所有的資料表均有效果,另一個是時間有限,受到undo大小和資料庫事務頻繁度的影響。
而flashback archive則是將資料歸檔做到了資料庫的層面上。設定一塊專門的區域空間,稱之為flashback archive。這個區域是真實對應在表空間上可以進行儲存使用的。之後設定這塊區域的保留時間。
在資料表層面,可以選擇需要進行保留的資料表,讓其與flashback archive區域關聯,這樣在儲存區域中,就會保留各個時間點的映象資料。
本篇中研究瞭如何設定和使用flashback archive,下面我們一起分析研究下設定flashback archive的資料表特徵和其他特點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27785870/viewspace-1813445/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Flashback Archive——Oracle閃迴歸檔(中)OracleHive
- Oracle Flashback Archive——Oracle閃迴歸檔(下)OracleHive
- 閃回資料歸檔-- Flashback Data ArchiveHive
- Oracle 11g新特性--閃回資料歸檔(flashback data archive)[zt]OracleHive
- Oracle 11g 閃迴歸檔Oracle
- oracle archive歸檔初步OracleHive
- Oracle Flashback Data ArchiveOracleHive
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- oracle archive log 歸檔日誌OracleHive
- oracle 閃回 flashbackOracle
- Flashback Data Archive (Oracle Total Recall)HiveOracle
- Oracle archive log 歸檔日誌管理OracleHive
- [Archive]更改ORACLE預設歸檔路徑HiveOracle
- Oracle閃回資料歸檔Oracle
- 開閃回及閃迴歸檔
- Oracle 閃回特性(FLASHBACK DATABASE)OracleDatabase
- How To Using Flashback Data Archive (Oracle Total Recall)HiveOracle
- 【oracle 】閃回與歸檔位置的理解Oracle
- oracle11g flashback archive feature新特性OracleHive
- Oracle 11g 閃回資料歸檔Oracle
- Oracle閃回技術--Flashback Version QueryOracle
- 開啟oracle的flashback閃回功能Oracle
- Flashback_oracle閃回功能的使用Oracle
- 【Flashback】11g的閃回資料歸檔初探
- 閃迴歸檔的簡單測試
- oracle 11g 新特性 Flashback Data Archive 說明OracleHive
- [zt] Oracle 11g 閃回資料歸檔Oracle
- 11G flashback data archive 導致產生大量歸檔日誌Hive
- oracle 歸檔/非歸檔Oracle
- 【備份恢復】 閃回技術之閃迴歸檔
- oracle歸檔Oracle
- DBMS_FLASHBACK_ARCHIVE在Oracle版本中的支援情況HiveOracle
- 關於oracle閃回資料歸檔的總結Oracle
- Oracle 11g開啟閃回功能FlashbackOracle
- Oracle Database 11g閃回技術flashbackOracleDatabase
- oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- Oracle OCP 1Z0 053 Q138(DROP FLASHBACK ARCHIVE)OracleHive
- Oracle OCP IZ0-053 Q166(Flashback Data Archive)OracleHive