閃回數據庫(Flashback Database)

Flashback Database閃回數據庫

 

使用閃回數據庫可以將數據庫快速的閃回到過去某個時間點。在啓用閃回數據時,會將修改過的塊的前映像作爲閃回數據庫日誌保存在閃回恢復區中,如出現邏輯壞塊或用戶錯誤操作需要恢復到過去的時間點,閃回數據庫將還原數據庫的前映像,然後使用歸檔日誌和redo前滾到期望恢復的時間點,因爲無需還原數據庫的數據文件,所有此過程速度比較傳統的還原恢復通常快很多。

啓動閃回數據庫時,會將前映像數據保存在“閃回緩衝區”中,然後由恢復寫入器(Recovery Writer,RVWR)後臺進程,將閃回緩衝區的前映像數據保存在閃回恢復區的閃回數據庫日誌中。

 

配置閃回數據庫相關參數:

db_recovery_file_dest  決定閃回恢復區路徑

db_recovery_file_dest_size  決定閃回恢復區大小

db_flashback_retention_target  保留恢復最近多長時間的數據,單位爲分鐘。

 

閃回數據庫必須在歸檔模式下

 

開啓歸檔

1、SQL> alter system set  log_archive_dest_1='location=+oradg/b1/recovery/' scope=both;

2、SQL> shutdown immediate
3、SQL>  startup mount
4、SQL> alter database archivelog;

5、SQL> alter database open;

6、SQL> archive log list

設置閃回區大小,路徑,閃回保留時間

SQL> alter system set db_recovery_file_dest_size=5G;

System altered.

 

SQL> alter system set db_recovery_file_dest='+ORADG';

System altered.

 

SQL> alter system set db_flashback_retention_target=2880;

System altered.

 

開啓閃回功能

SQL> startup mount exclusive

SQL> alter database flashback on;

Database altered.

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

關閉閃回功能

SQL> startup mount exclusive
ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             557844472 bytes
Database Buffers          276824064 bytes
Redo Buffers                2396160 bytes
Database mounted.
SQL> alter database flashback off;

Database altered.

SQL> alter database open ;

Database altered.

SQL> alter system set db_recovery_file_dest='';

System altered.

 

閃回數據庫的步驟

1、關閉數據庫


2、啓動數據庫到mount狀態[exclusive模式]


3、閃回至某個時間點,SCN或還原點


4、使用resetlogs打開數據庫

 

閃回數據庫的方法


1、sqlplus下基於SCN閃回

 FLASHBACK  DATABASE [<database_name>]  TO  SCN <system_change_number>

 

2、sqlplus下基於時間戳閃回

 FLASHBACK  DATABASE [<database_name>]  TO  TIMESTMP <system_timestamp_value>

 

3、sqlplus下基於還原點閃回

 FLASHBACK  DATABASE [<database_name>]  TO  RESTORE POINT <restore_point_name>

 

4、RMAN下基於時間戳閃回

 RMAN> FLASHBACK DATABASE TO TIME = "TO_DATE('2013-10-10 19:25:21','YYYY-MM-DD HH24:MI:SS')";

 

5、RMAN下基於SCN閃回

 RMAN> FLASHBACK DATABASE TO SCN=1121679;


6、RMAN下基於:歸檔序號

 RMAN> FLASHBACK DATABASE TO SEQUENCE=56 THREAD=1;

 

運用閃回功能示例:

示例1:刪除表的部分數據後,使用閃回數據庫的方法恢復

SQL> create table test_flashback as select * from emp;  --創建表

Table created.

SQL> select dbms_flashback.get_system_change_number from dual; --記錄刪除數據前scn

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1069396

SQL> delete from test_flashback where deptno=20;      --刪除數據

5 rows deleted.

SQL> commit;

Commit complete.

SQL> startup mount exclusive              --啓動到mount exclusive狀態
ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             557844472 bytes
Database Buffers          276824064 bytes
Redo Buffers                2396160 bytes
Database mounted.

SQL> flashback database to scn 1069396;  --閃回到刪除數據之前,還可以用時間戳閃回如:                                            

Flashback complete.                                    --flashback database to to_timestamp('2013-10-8 18:02:34','YYYY-MM-DD HH24:MI:SS')


SQL> alter database open read only;    --以read only 方式打開檢查數據庫是否閃回成功,如不成功考慮其他形式的閃回

Database altered.

SQL> select * from scott.test_flashback where deptno=20;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20

 

SQL> startup
ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             557844472 bytes
Database Buffers          276824064 bytes
Redo Buffers                2396160 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL> alter database open resetlogs;

Database altered.

--閃回數據庫之後,最後做一次全備


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章