由於客戶處生產環境需要,對Oracle開啟閃回功能,在開啟的過程中出現了一些問題,拋出ora-38706,ora-38709錯誤,通過綜合客戶生產庫的一系列分析後,問題終於等到解決,成功開啟閃回功能。下面來介紹詳細的解決步驟。
正文:
生產環境:
l Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
l
Windows server 2008 R2 Enterprise
當mount階段下執行:alter database flashback on; 出現以下錯誤:
Errors in file e:\app\oracle\diag\rdbms\orcl\orcl\trace\orcl_ora_11228.trc:
ORA-38706: 無法啟用 FLASHBACK DATABASE 事件記錄。
ORA-38709: 尚未啟用恢復區。
ORA-38706 signalled during: alter database flashback on.
經分析發現:通過show parameter db_recovery發現沒有指定路徑。
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 4182M
通過以下命令指定路徑:
SQL> alter system set db_recovery_file_dest='D:\app\Administrator\fast_recovery_
area\orcl';
報以下錯誤:
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
通過該命令show parameter archive,原來把歸檔路徑LOG_ARCHIVE_DEST設置了路徑,導致db_recovery_file_dest不能設置路徑,通過以下方式改變:
歸檔路徑:
SQL> alter system set log_archive_dest='';
SQL> alter system set log_archive_dest_1='location=D:\archivelog';
閃回路徑:
SQL> alter system set db_recovery_file_dest='D:\app\Administrator\fast_recovery_
area\orcl';
這時執行:
SQL> alter database flashback on;
數據庫已更改。
此時已經開啟數據庫閃回功能。
同時也可以設置閃回空間大小和閃回保留生存期:
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=10g;----設定閃回空間大小為10G
SQL> alter system set db_flashback_retention_target=30; --設定保留時間為半小時,默認為1440.
總結:
閃回技術通常用於快速簡單恢復數據庫中出現的認為誤操作等邏輯錯誤,同時要求數據庫必須處於歸檔模式,且閃回之後必須使用resetlogs打開數據庫。數據庫的閃回恢復的速度要快於RMAN以及基於用戶管理的備份與恢復,其主要原因是因為數據庫閃回使用的是閃回日志,而閃回日志中保存的是數據塊的完整鏡像。