Oracle 10g flashback
Flashback database
閃回資料庫可以迅速的時資料庫回到誤操作或人為錯誤的前一個時間點,如實際中的“撤消”操作,將可以不利用備份就快速的實現時間點的恢復(有後悔藥可以吃了)。實際上,Oracle為了實現這一個功能,建立了另外一組日誌,就是Flashback Logs(前滾日誌),記錄資料庫的前滾操作。如果希望能閃回資料庫,需要設定如下引數:
DB_RECOVER_FILE_DEST
DB_RECOVER_FILE_DEST_SIZE
這兩個引數來確定Flashback日誌的存放地點與該恢復區的大小。在建立資料庫的時候,Oracle將自動建立恢復區(需要注意,該恢復區可不僅僅是為了flashback log,還可以用來歸檔,備份與恢復),但是預設是關閉Flashback database功能。如果想要利用這一功能,DBA就必須正確的配置該日誌區的大小,如一個資料庫的資料庫,每天有10%的塊發生改變,那麼一天(24小時)的Flash Recovery Area就是1/10個資料庫大小。DBA也可以動態的改變其大小以滿足不同的需求。
另外一個引數DB_FLASHBACK_RETENTION_TARGET引數允許您設定閃回資料的儲存時間,單位是分。預設是一天(24*60)
如果想啟動FLASHBACK DATABASE的功能,您必須在MOUNT模式下,執行alter database flashback on命令。或者是alter tablespace tsname flashback on,資料庫將採集falshback log,如果需要關係該功能,則修改On為OFF。
如果想執行flashback database命令,你可以在兩種方式下執行:RMAN與SQLPLUS。
SQL >flashback database to time to_date(xxx);
SQL >flashback database to time TO_TIMESTAMP (xxx);
SQL >flashback database to scn xxx
SQL >flashback database to sequence xxx thread 1
SQL>flashback database to timestamp(sysdate-1/24)
我們下面看看具體的例子說明
SQL> startup mount
ORACLE instance started.
Total System Global Area 113246208 bytes
Fixed Size 787708 bytes
Variable Size 87030532 bytes
Database Buffers 25165824 bytes
Redo Buffers 262144 bytes
Database mounted.
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.
可以看到,flashback還必須要歸檔的保證
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on; bbs.2168.net國內最早的網管論壇
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 13
Next log sequence to archive 15
Current log sequence 15
經過以上步驟,我們確保了flashback database的功能,我們還可以發現,10g的自動歸檔是不需要手工干預的,只要開啟了歸檔,就是自動歸檔了,歸檔區也在DB_RECOVERY_FILE_DEST引數指定的地點。
透過如下的查詢
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME
2 FROM V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
1135440 2004-04-06 15:20:57
我們可以知道,可以前滾恢復到的最早的SCN與時間點是多少,如果沒有確保flashback database,該檢視將沒有查詢結果。
我們建立三個一樣的表
SQL> create table t1 as select * from dba_objects;
Table created.
SQL> create table t2 as select * from t1;
Table created.
SQL> create table t3 as select * from t1;
Table created.
SQL> set time on;
SQL> select sysdate from dual;
SYSDATE
-------------------
2004-04-06 15:29:33
我們確定了一個時間點
現在,我們分別truncate一個表與drop一個表,模擬誤操作。
15:30:10 SQL> truncate table t2;
Table truncated.
15:30:43 SQL> drop table t3;
Table dropped.
沒有備份,我們利用flashback來恢復資料庫到2004-04-06 15:29:33時間點。
15:39:02 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
15:39:31 SQL> startup mount exclusive
ORACLE instance started.
15:41:19 SQL> FLASHBACK DATABASE TO timestamp(to_date('2004-04-06 15:29:33','yyyy-mm-dd hh24:mi:ss'));
Flashback complete.
之後,我們可以用
ALTER DATABASE OPEN READ ONLY來檢查結果是否正確,如果滿足結果,則可以用resetlog來正式啟動資料庫,注意,一旦resetlogs之後,將不能再flashback的resetlogs之前的時間點。 bbs.2168.net國內最早的網管論壇
15:41:32 SQL> alter database open resetlogs;
Database altered.
我們現在查詢那三個表
15:42:10 SQL> select count(*) from t1;
COUNT(*)
----------
47708
15:42:47 SQL> select count(*) from t2;
COUNT(*)
----------
47708
15:42:50 SQL> select count(*) from t3;
COUNT(*)
----------
47708
發現truncate的記錄或者是drop的表都存在,現在資料庫已經前滾到前一個時間點了。
15:44:56 SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME
15:45:05 2 FROM V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
1136169 2004-04-06 15:41:50
同時發現資料庫的最早的flashback的時間與scn都回到resetlog的時間點了。
閃回資料庫可以迅速的時資料庫回到誤操作或人為錯誤的前一個時間點,如實際中的“撤消”操作,將可以不利用備份就快速的實現時間點的恢復(有後悔藥可以吃了)。實際上,Oracle為了實現這一個功能,建立了另外一組日誌,就是Flashback Logs(前滾日誌),記錄資料庫的前滾操作。如果希望能閃回資料庫,需要設定如下引數:
DB_RECOVER_FILE_DEST
DB_RECOVER_FILE_DEST_SIZE
這兩個引數來確定Flashback日誌的存放地點與該恢復區的大小。在建立資料庫的時候,Oracle將自動建立恢復區(需要注意,該恢復區可不僅僅是為了flashback log,還可以用來歸檔,備份與恢復),但是預設是關閉Flashback database功能。如果想要利用這一功能,DBA就必須正確的配置該日誌區的大小,如一個資料庫的資料庫,每天有10%的塊發生改變,那麼一天(24小時)的Flash Recovery Area就是1/10個資料庫大小。DBA也可以動態的改變其大小以滿足不同的需求。
另外一個引數DB_FLASHBACK_RETENTION_TARGET引數允許您設定閃回資料的儲存時間,單位是分。預設是一天(24*60)
如果想啟動FLASHBACK DATABASE的功能,您必須在MOUNT模式下,執行alter database flashback on命令。或者是alter tablespace tsname flashback on,資料庫將採集falshback log,如果需要關係該功能,則修改On為OFF。
如果想執行flashback database命令,你可以在兩種方式下執行:RMAN與SQLPLUS。
SQL >flashback database to time to_date(xxx);
SQL >flashback database to time TO_TIMESTAMP (xxx);
SQL >flashback database to scn xxx
SQL >flashback database to sequence xxx thread 1
SQL>flashback database to timestamp(sysdate-1/24)
我們下面看看具體的例子說明
SQL> startup mount
ORACLE instance started.
Total System Global Area 113246208 bytes
Fixed Size 787708 bytes
Variable Size 87030532 bytes
Database Buffers 25165824 bytes
Redo Buffers 262144 bytes
Database mounted.
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.
可以看到,flashback還必須要歸檔的保證
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on; bbs.2168.net國內最早的網管論壇
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 13
Next log sequence to archive 15
Current log sequence 15
經過以上步驟,我們確保了flashback database的功能,我們還可以發現,10g的自動歸檔是不需要手工干預的,只要開啟了歸檔,就是自動歸檔了,歸檔區也在DB_RECOVERY_FILE_DEST引數指定的地點。
透過如下的查詢
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME
2 FROM V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
1135440 2004-04-06 15:20:57
我們可以知道,可以前滾恢復到的最早的SCN與時間點是多少,如果沒有確保flashback database,該檢視將沒有查詢結果。
我們建立三個一樣的表
SQL> create table t1 as select * from dba_objects;
Table created.
SQL> create table t2 as select * from t1;
Table created.
SQL> create table t3 as select * from t1;
Table created.
SQL> set time on;
SQL> select sysdate from dual;
SYSDATE
-------------------
2004-04-06 15:29:33
我們確定了一個時間點
現在,我們分別truncate一個表與drop一個表,模擬誤操作。
15:30:10 SQL> truncate table t2;
Table truncated.
15:30:43 SQL> drop table t3;
Table dropped.
沒有備份,我們利用flashback來恢復資料庫到2004-04-06 15:29:33時間點。
15:39:02 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
15:39:31 SQL> startup mount exclusive
ORACLE instance started.
15:41:19 SQL> FLASHBACK DATABASE TO timestamp(to_date('2004-04-06 15:29:33','yyyy-mm-dd hh24:mi:ss'));
Flashback complete.
之後,我們可以用
ALTER DATABASE OPEN READ ONLY來檢查結果是否正確,如果滿足結果,則可以用resetlog來正式啟動資料庫,注意,一旦resetlogs之後,將不能再flashback的resetlogs之前的時間點。 bbs.2168.net國內最早的網管論壇
15:41:32 SQL> alter database open resetlogs;
Database altered.
我們現在查詢那三個表
15:42:10 SQL> select count(*) from t1;
COUNT(*)
----------
47708
15:42:47 SQL> select count(*) from t2;
COUNT(*)
----------
47708
15:42:50 SQL> select count(*) from t3;
COUNT(*)
----------
47708
發現truncate的記錄或者是drop的表都存在,現在資料庫已經前滾到前一個時間點了。
15:44:56 SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME
15:45:05 2 FROM V$FLASHBACK_DATABASE_LOG;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
1136169 2004-04-06 15:41:50
同時發現資料庫的最早的flashback的時間與scn都回到resetlog的時間點了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84745/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 10g flashback databaseOracle 10gDatabase
- flashback version query in oracle 10gOracle 10g
- Oracle 10g 六種FlashbackOracle 10g
- oracle 10g flashback version query 和 flashback transaction query實驗Oracle 10g
- Oracle Flashback (9i & 10g) [zt]Oracle
- Oracle 10g Flashback 技術小結(zt)Oracle 10g
- Flashback New Features and Enhancements in Oracle Database 10gOracleDatabase
- Oracle 10g FLASHBACK DATABASE 實驗記錄Oracle 10gDatabase
- Oracle 10g FlashBack簡單應用一則Oracle 10g
- oracle實驗記錄 (oracle 10G dataguard(10)flashback 與dg)Oracle
- Oracle9i,.10g 閃回查詢(flashback)Oracle
- Oracle FlashbackOracle
- Does Goldengate Support The New Oracle 10g Flashback Feature? [ID 966212.1]GoOracle 10g
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- oracle的flashbackOracle
- Oracle Flashback(二)Oracle
- Oracle Flashback(一)Oracle
- 10G新特性筆記之FLASHBACK筆記
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- oracle flashback特性(3.2)--Flashback Database操作示例OracleDatabase
- Oracle Flashback 閃回查詢功能操作範例(9i and 10g)Oracle
- 應用oracle flashback--Flashback Database介紹OracleDatabase
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- Oracle Flashback Data ArchiveOracleHive
- oracle 閃回 flashbackOracle
- Oracle的flashback功能Oracle
- oracle recyclebin和flashbackOracle
- oracle 利用flashback將備庫啟用為read wirte(10g 及上)Oracle
- Oracle -- flashback database基於ARC+flashback_log還是flashback_logOracleDatabase
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- 【徵文】應用oracle flashback(3.2)--Flashback Database操作示例OracleDatabase
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- ORACLE Flashback Query偽列Oracle
- 全面學習oracle flashback特性(3.2)--Flashback Database操作示例OracleDatabase
- 全面學習oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- 【Flashback】10G的新特性“閃回表”清除方法
- oracle flashback特性(2.2)--Flashback Table之從UNDO中恢復Oracle