Oracle9i開始提供閃回查詢,以便能在需要的時候查到過去某個時刻的一致性數據,這是通過Undo實現的。這個功能有很大的限制,就是相關事務的undo不能被覆蓋,否則就無力回天了。Oracle10g大大的增強了閃回查詢的功能,並且提供了將整個數據庫回退到過去某個時刻的能力,這是通過引入一種新的flashback log實現的。flashback log有點類似redo log,只不過redo log將數據庫往前滾,Flashback log則將數據庫往後滾。為了保存管理和備份恢復相關的文件,Oracle10g提供了一個叫做閃回恢復區(Flashback recovery area)的新特性,可以將所有恢復相關的文件,比如Flashback log,archive log,backup set等,放到這個區域集中管理。
1.設置閃回恢復區
閃回恢復區主要通過3個初始化參數來設置和管理
db_recovery_file_dest:指定閃回恢復區的位置
db_recovery_file_dest_size:指定閃回恢復區的可用空間大小
db_Flashback_retention_target:指定數據庫可以回退的時間,單位為分鐘,默認1440分鐘,也就是一天。當然,實際上可回退的時間還決定於閃回恢復區的大小,因為裡面保存了回退所需要的Flash log。所以這個參數要和db_recovery_file_dest_size配合修改。
2.啟動Flashback database
設置了閃回恢復區後,可以啟動閃回數據庫功能。
首先,數據庫必須已經處於歸檔模式
那麼如何設置歸檔呢?很簡單的步驟
1.關閉數據庫
SQL> shutdown immediate;
2.啟動數據庫為mount模式
SQL> startup mount
3.顯示和修改歸檔模式
SQL> archive log list
SQL> alter database archivelog;
SQL> alter database open
4.設置歸檔日志的格式
SQL>alter system set log_archive_format=''ARC%s%t%r.log'' scope=spfile;
5.設置歸檔日志的存放路徑
SQL>alter system set log_archive_dest=''+data/arcl'' scope=spfile;
SQL>shutdown immediate
SQL>startup
6.強制切換歸檔日至
SQL>alter system switch logfile;
7.取消歸檔
SQL>alter database noarchivelog;
參數
1.格式參數
%s 日志序列號