Oracle Database 11g閃回技術flashback

luashin發表於2016-02-05
一.flashback功能的開啟:
select flashback_on from v$database; 
alter database flashback on; 
一定要在歸檔模式下!

二.flashback table
將表回滾到一個過去的時間點或系統改變號scn上,用於快速恢復表-----依賴於undo表空間
show parameter undo;            //檢視undo資訊
alter system set undo_retention=1200 scope=both;
閃回查詢的例子:
SQL> select empno,sal from scott.emp as of timestamp sysdate-1/24 where empno=7844;                   (一個小時前的資料)
SQL> select empno,sal from scott.emp as of timestamp to_timestamp('2012-07-28 14:00:12','yyyy-mm-dd hh24:mi:ss')  where empno=7844;     (某一時刻的資料)
SQL> select empno,sal from scott.emp as of scn 2642150 where empno=7844;                             (基於scn查詢)
使用閃回查詢根據需求來閃回表:
flashback table test to timestamp to_timestamp('2012-07-28 15:56:05','yyyy-mm-dd hh24:mi:ss');
flashback table test to scn 2649009;

三.flashback drop
結合Oracle的回收站,將刪除的物件從回收站中還原-----依賴於oracle回收站
注意:dba刪除的物件不會在回收站中!
檢視回收站:show recyclebin;
清空回收站:purge dba_recyclebin;
開啟回收站功能:alter session set recyclebin=on;
檢視回收站: select object_name,original_name,type from user_recyclebin;
在回收站中刪除: purge table test1; 
閃回刪除:flashback table test to before drop;

四.flashback version query
檢視某表在指定時間段內或兩個scn之間的操作修改
例子:
SQL> select versions_xid xid,versions_starttime starttime,versions_endtime endtime,versions_operation operation,sal from scott.emp versions between timestamp minvalue and maxvalue where empno=7844 order by starttime;
SQL> select versions_xid xid,versions_startscn startscn,versions_endscn endscn,versions_operation operation,sal from scott.emp versions between scn minvalue and maxvalue where empno=7844 order by startscn;

五.flashback transaction query
結合閃回版本查詢。檢視某個物件的事務資訊:撤銷sql語句,用於實現對事務進行撤銷處理
SQL> select TABLE_NAME,OPERATION,UNDO_SQL from flashback_transaction_query where table_name='emp';

六.flashback database
將資料庫回滾到一個過去的時間點或系統改變號上,用於快速恢復資料庫------依賴oracle閃回資料恢復區
show parameter db_flash 
1. shutdown immediate;
2. startup mount exclusive; 
3. flashback database to timestamp(to_date('2012-07-28 17:13:16','yyyy-mm-dd hh24:mi:ss'));
4. alter database open resetlogs;
5. 全備

七.flashback data archive
對物件的修改操作記錄在閃回資料歸檔區域中,這樣使資料的閃回不再依賴與undo撤銷資料
********管理閃回資料歸檔區:
1>建立一個預設閃回資料歸檔區:
SQL> create flashback archive default arch_default tablespace arch quota 20M retenton 1 year;
2>為閃回資料歸檔區增加一個表空間:
SQL> alter flashback archive arch_default add tablespace mytest quota 5M;
3>刪除閃回資料歸檔區的表空間:
SQL> alter flashback archive arch_default remove tablespace mytest;
SQL> alter flashback archive arch_default modify retention 1 month;
SQL> drop flashback archive arch_default;
********使用閃回資料歸檔區
1.SQL> create table test(n int) flashback archive arch_default ;   ------建立表時直接使用
2.SQL> alter table test flashback archive arch_default;            -----表建立後使用
3.插入資料,刪除test表的內容
4.SQL> select * from test as of timestamp to_timestamp('2012-07-28 15:56:05','yyyy-mm-dd hh24:mi:ss');
********清除閃回資料歸檔區
1.指定時間前:
SQL> alter flashback archive arch_default purge before timestamp to_timestamp('2012-07-28 15:56:05','yyyy-mm-dd hh24:mi:ss');
2.指定scn前
SQL> alter flashback archive arch_default purge before 345723;
3.所有
SQL> alter flashback archive arch_default purge all
注意:在oracle閃回中常用的命令:
SQL> select scn_to_timestamp(2642150) from dual;
SQL> select timestamp_to_scn(to_date('2012-07-28 14:26:25','yyyy-mm-dd hh24:mi:ss')) from dual;
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL> set time on; 顯示時間

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

相關文章