標籤:des style blog http color io 使用 ar strong
預設情況資料庫的flashback database是關閉的。
啟用Flashback Database 步驟:
1.配置Flash Recovery Area
檢查是否啟動了flash recovery area:
SQL> show parameter db_recovery_file;NAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string D:\app\Administrator\flash_recovery_area db_recovery_file_dest_size big integer 3912M
2.啟動flashback database
SQL> shutdown immediate;資料庫已經關閉。已經卸載資料庫。ORACLE 常式已經關閉。SQL> startup mount;ORACLE 常式已經啟動。Total System Global Area 855982080 bytesFixed Size 2180544 bytesVariable Size 587205184 bytesDatabase Buffers 260046848 bytesRedo Buffers 6549504 bytes資料庫裝載完畢。SQL> alter database flashback on;資料庫已更改。SQL> alter database open;資料庫已更改。SQL> select flashback_on from v$database;FLASHBACK_ON------------------YESSQL>
3.檢查是否啟用了歸檔(必須開戶歸檔模式)
SQL> archive log list;資料庫記錄模式 存檔模式自動封存 啟用存檔終點 USE_DB_RECOVERY_FILE_DEST最早的聯機日誌序列 10下一個存檔日誌序列 12當前日誌序列 12SQL>
4. 查詢當前的scn及目前時間
SQL> select current_scn from v$database;CURRENT_SCN-----------1126864SQL> select sysdate from dual;SYSDATE--------------15-10月-14SQL> select to_char(sysdate,‘YY-MM-DD HH24:MI:SS‘) TIME FROM DUAL;TIME-----------------14-10-15 23:43:15
5.刪除scott.emp表
SQL> drop table bonus;
表已刪除。
6.重啟DB 到mount
Flashback Database 實際是對資料庫的一個不完全恢複操作,因為需要關閉資料庫重啟到mount狀態
SQL> shutdown immediate;資料庫已經關閉。已經卸載資料庫。ORACLE 常式已經關閉。SQL> startup mount;ORACLE 常式已經啟動。Total System Global Area 855982080 bytesFixed Size 2180544 bytesVariable Size 587205184 bytesDatabase Buffers 260046848 bytesRedo Buffers 6549504 bytes資料庫裝載完畢。SQL>
7.執行恢複:分timestamp 或者SCN兩種
SQL> flashback database to timestamp to_timestamp(‘14-10-15 23:43:15‘,‘YY-MM-DD HH24:MI:SS‘);閃回完成。或者:SQL> flashback database to scn 1126864;閃回完成。
8.開啟資料庫
在執行完flashback database 命令之後,oracle 提供了兩種方式讓你修複資料庫:
1). 直接alter database open resetlogs 開啟資料庫,當然,指定scn 或者timestamp 時間點之後產生的資料統統丟失。
2). 先執行alter database open read only 命令,以read-only 模式開啟資料庫,然後立刻通過邏輯匯出的方式將誤操作涉
及表的資料匯出,再執行recover database 命令以重新應用程式資料庫產生的redo,將資料庫修複到flashback database 操作前
的狀態,然後再通過邏輯匯入的方式,將之前誤操作的表重新匯入,這樣的話對現有資料的影響最小,不會有資料丟失。
使用第一種方式開啟資料庫後可看到之前刪除的scott.bonus表已還原。
SQL> alter database open resetlogs;資料庫已更改。SQL> conn scott/tiger@orcl;已串連。SQL> select * from tab;TNAME TABTYPE CLUSTERID------------------------------ ------- ----------BIN$xOhMA3Y1RcGfglRwvq8V+g==$0 TABLEBONUS TABLEDEPT TABLEEMP TABLESALGRADE TABLESYS_TEMP_FBT TABLE已選擇6行。
二、與Flashback Database相關的3個視圖
1.V$database
這個視圖可以查看是否啟用了Flashback database功能
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
2.V$flashback_database_log
Flashback Database 所能回退到的最早時間,取決與保留的Flashback Database Log 的多少, 該視圖就可以查看許多有用的
資訊。
Oldest_flashback_scn / Oldest_flashback_time : 這兩列用來記錄可以恢複到最早的時點
Flashback_size: 記錄了當前使用的Flash Recovery Area 空間的大小
Retention_target: 系統定義的策略
Estimated_flashback_size: 根據策略對需要的空間大小的估計值
SQL> select *from v$flashback_database_stat;BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE----------- ----------- -------------- ---------- ---------- ------------------------2014/10/15 2014/10/16 2269184 4816896 228864 0
3. V$flashback_database_stat
這個視圖用來對Flashback log 空間情況進行更細粒度的記錄和估計。 這個視圖以小時為單位記錄單位時間內資料庫的活動量
:
Flashback_Data 代表Flashback log產生數量,
DB_Date 代表資料改變數量,
Redo_Date代表日誌數量,
通過這3個數量可以反映出資料的活動特點,更準確的預計Flash Recovery Area的空間需求
SQL> select *from v$flashback_database_stat;BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE----------- ----------- -------------- ---------- ---------- ------------------------2014/10/15 2014/10/16 2433024 4849664 396800 0
《FROM:http://blog.csdn.net/tianlesoftware/article/details/4677378》
flashback database操作步驟