閃回?cái)?shù)據(jù)庫(Flashback Database)
Flashback Database閃回數(shù)據(jù)庫
使用閃回?cái)?shù)據(jù)庫可以將數(shù)據(jù)庫快速的閃回到過去某個(gè)時(shí)間點(diǎn)。在啟用閃回?cái)?shù)據(jù)時(shí),會將修改過的塊的前映像作為閃回?cái)?shù)據(jù)庫日志保存在閃回恢復(fù)區(qū)中,如出現(xiàn)邏輯壞塊或用戶錯誤操作需要恢復(fù)到過去的時(shí)間點(diǎn),閃回?cái)?shù)據(jù)庫將還原數(shù)據(jù)庫的前映像,然后使用歸檔日志和redo前滾到期望恢復(fù)的時(shí)間點(diǎn),因?yàn)闊o需還原數(shù)據(jù)庫的數(shù)據(jù)文件,所有此過程速度比較傳統(tǒng)的還原恢復(fù)通??旌芏?。
啟動閃回?cái)?shù)據(jù)庫時(shí),會將前映像數(shù)據(jù)保存在“閃回緩沖區(qū)”中,然后由恢復(fù)寫入器(Recovery Writer,RVWR)后臺進(jìn)程,將閃回緩沖區(qū)的前映像數(shù)據(jù)保存在閃回恢復(fù)區(qū)的閃回?cái)?shù)據(jù)庫日志中。
配置閃回?cái)?shù)據(jù)庫相關(guān)參數(shù):
db_recovery_file_dest 決定閃回恢復(fù)區(qū)路徑
db_recovery_file_dest_size 決定閃回恢復(fù)區(qū)大小
db_flashback_retention_target 保留恢復(fù)最近多長時(shí)間的數(shù)據(jù),單位為分鐘。
閃回?cái)?shù)據(jù)庫必須在歸檔模式下
開啟歸檔
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
設(shè)置閃回區(qū)大小,路徑,閃回保留時(shí)間
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 |
關(guān)閉閃回功能
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. |
閃回?cái)?shù)據(jù)庫的步驟
1、關(guān)閉數(shù)據(jù)庫
2、啟動數(shù)據(jù)庫到mount狀態(tài)[exclusive模式]
3、閃回至某個(gè)時(shí)間點(diǎn),SCN或還原點(diǎn)
4、使用resetlogs打開數(shù)據(jù)庫
閃回?cái)?shù)據(jù)庫的方法
1、sqlplus下基于SCN閃回
FLASHBACK DATABASE [<database_name>] TO SCN <system_change_number>
2、sqlplus下基于時(shí)間戳閃回
FLASHBACK DATABASE [<database_name>] TO TIMESTMP <system_timestamp_value>
3、sqlplus下基于還原點(diǎn)閃回
FLASHBACK DATABASE [<database_name>] TO RESTORE POINT <restore_point_name>
4、RMAN下基于時(shí)間戳閃回
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;
運(yùn)用閃回功能示例:
示例1:刪除表的部分?jǐn)?shù)據(jù)后,使用閃回?cái)?shù)據(jù)庫的方法恢復(fù)
SQL> create table test_flashback as select * from emp; --創(chuàng)建表 Table created. SQL> select dbms_flashback.get_system_change_number from dual; --記錄刪除數(shù)據(jù)前scn GET_SYSTEM_CHANGE_NUMBER ------------------------ 1069396 SQL> delete from test_flashback where deptno=20; --刪除數(shù)據(jù) 5 rows deleted. SQL> commit; Commit complete. SQL> startup mount exclusive --啟動到mount exclusive狀態(tài) 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; --閃回到刪除數(shù)據(jù)之前,還可以用時(shí)間戳閃回如: 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 方式打開檢查數(shù)據(jù)庫是否閃回成功,如不成功考慮其他形式的閃回 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. |
--閃回?cái)?shù)據(jù)庫之后,最后做一次全備
posted on 2013-10-15 11:21 順其自然EVO 閱讀(235) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫