Oracle的flashback功能
從Oracle 10g開始,透過使用flashback table語句不僅可以快速恢復表,而且也不影響任何其他表空間和其他表。在Oracle 10g中,當執行drop table操作時,表結構和資料不會被立即清除,而是被放在資料庫的回收站(Recyclebin)中。如果表段所在表空間足夠大,那麼其內容可能永遠不會被清除,此時透過flashback table可以快速恢復。
SQL> flashback table emp to before drop;
或者
SQL> flashback table emp to before drop rename to emp3;
其實除了上面的DDL外,DML也可以透過flashback來恢復。
SQL> create table emp(sal number(10,1),id number);
Table created.
SQL> insert into emp values(2000,1);
1 row created.
SQL> insert into emp values(3000,2);
1 row created.
SQL> insert into emp values(3500,3);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from emp;
SAL ID
---------- ----------
2000 1
3000 2
3500 3
SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2013-06-17 15:57:52
SQL> update emp set sal=sal*1.1 ;
3 rows updated.
SQL> commit;
Commit complete.
SQL> select * from emp;
SAL ID
---------- ----------
2200 1
3300 2
3850 3
SQL> alter table emp enable row movement;
Table altered.
SQL> update emp set sal=sal*1.1 ;
3 rows updated.
SQL> commit;
Commit complete.
SQL> select * from emp;
SAL ID
---------- ----------
2420 1
3630 2
4235 3
SQL> flashback table emp to timestamp to_timestamp('2013-06-17 15:57:52','yyyy-MM-dd hh24:mi:ss');
Flashback complete.
SQL> select * from emp;
SAL ID
---------- ----------
2000 1
3000 2
3500 3
SQL>
可以看到,即使已經修改過2次,透過flashback table 還是可以把資料表的資料閃回到指定的時間點。唯一需要注意的是,必須啟用表的行移動特性。另外,flashback table 所能恢復到的最早時間受限於初始化引數db_flashback_retention_target。
SQL> show parameter db_flashback_retention_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
除了上面的flashback table功能外,從oracle 10g開始,增加了flashback database功能可以將資料庫快速恢復到先前時間點。flashback database不能用於恢復介質失敗,並且使用flashback database必須滿足以下條件:
1)資料庫必須處於 ARCHIVELOG 模式
2)必須啟用資料庫的 flashback 特徵
3)必須合理配置初始化引數db_flashback_retention_target,該引數用於控制可以恢復到的最早時間點。
配置資料庫支援:
SQL> startup mount
SQL> alter database archivelog;
SQL> alter system set db_recovery_file_dest_size=2g;
SQL> alter system set db_recovery_file_dest='/app/flash_recovery_area';
SQL> alter database flashback on;
SQL> alter system set db_flashback_retention_target=3600;
SQL> alter database open;
雖然啟用了資料庫的flashback,仍可以禁止特定表空間的flashback特徵:
SQL> alter tablespace TEST flashback off;
透過查詢試圖 v$flashback_database_log 可以確定flashback database命令可以恢復到的最早時間點:
SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;
最後,透過SQL或者RMAN方式使用flashback database命令,以及 to scn選擇或 to time選項。
SQL> startup mount
SQL> flashback database to scn 199468094;
SQL> alter database open resetlogs;
或者
RMAN> shutdown immediate
RMAN> startup mount
RMAN> flashback database to time ‘2013-08-22 10:20:13’;
RMAN> alter database open resetlogs;
為保險起見,可以先不要以resetlogs的形式開啟資料,而是採用read only的方式開啟,確認結果不對,則繼續flashback,確認結果成功,則用resetlogs的方式開啟。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-764135/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開啟oracle的flashback閃回功能Oracle
- Flashback_oracle閃回功能的使用Oracle
- 【Flashback】Flashback Query功能實踐
- 【Flashback】Flashback Table功能實踐
- oracle的flashbackOracle
- Oracle 11g開啟閃回功能FlashbackOracle
- 【實驗】【Flashback】Flashback EXP功能實踐
- Oracle中flashback table功能為什麼需要開啟row movement功能Oracle
- Oracle FlashbackOracle
- 【實驗】【Flashback】Flashback Transaction Query功能實踐
- 在Oracle DG Standby庫上啟用flashback database功能OracleDatabase
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- 啟用flashback database 功能Database
- 【Flashback】Flashback Drop閃回刪除功能實踐
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- Oracle Flashback(二)Oracle
- Oracle Flashback(一)Oracle
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- oracle flashback特性(3.2)--Flashback Database操作示例OracleDatabase
- ORACLE flashback 為什麼要啟動行遷移功能(轉)Oracle
- 應用oracle flashback--Flashback Database介紹OracleDatabase
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- Oracle Flashback Data ArchiveOracleHive
- oracle 閃回 flashbackOracle
- oracle recyclebin和flashbackOracle
- Oracle -- flashback database基於ARC+flashback_log還是flashback_logOracleDatabase
- 【徵文】應用oracle flashback(3.2)--Flashback Database操作示例OracleDatabase
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- ORACLE Flashback Query偽列Oracle
- Oracle 10g flashbackOracle 10g
- Oracle10g Flashback database功能恢復使用者錯誤(zt)OracleDatabase
- 使用Oracle10g Flashback database功能恢復使用者錯誤OracleDatabase
- 全面學習oracle flashback特性(3.2)--Flashback Database操作示例OracleDatabase
- 全面學習oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle