1. 設(shè)置閃回恢復(fù)區(qū)
閃回恢復(fù)區(qū)主要通過3個初始化參數(shù)來設(shè)置和管理
db_recovery_file_dest:指定閃回恢復(fù)區(qū)的位置
db_recovery_file_dest_size:指定閃回恢復(fù)區(qū)的可用空間大小
db_flashback_retention_target:指定數(shù)據(jù)庫可以回退的時間,,單位為分鐘,,默認(rèn)1440分鐘,,也就是一天,。當(dāng)然,實(shí)際上可回退的時間還決定于閃回恢復(fù)區(qū)的大小,,因?yàn)槔锩姹4媪嘶赝怂枰?/SPAN>flash log,。所以這個參數(shù)要和db_recovery_file_dest_size配合修改。
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=3g SCOPE=BOTH;
System altered.
SQL> ALTER SYSTEM SET db_recovery_file_dest=' D:\app\Administrator\flash_recovery_area ' SCOPE=BOTH;
System altered.
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\app\Administrator\flash_recovery_area
db_recovery_file_dest_size big integer 3852M
SQL> show parameter db_flashback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
2. 啟動flashback database
默認(rèn)情況數(shù)據(jù)庫的flashback database是關(guān)閉,,可以在mount exclusive狀態(tài)下打開,。在設(shè)置了閃回恢復(fù)區(qū)后,可以啟動閃回數(shù)據(jù)庫功能,。
SQL> archive log list; --數(shù)據(jù)庫必須已經(jīng)處于歸檔模式
數(shù)據(jù)庫日志模式 存檔模式
自動存檔 啟用
存檔終點(diǎn) d:\archivelog
最早的聯(lián)機(jī)日志序列 60
下一個存檔日志序列 62
當(dāng)前日志序列 62
SQL> shutdown immediate;
數(shù)據(jù)庫已經(jīng)關(guān)閉,。
已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉,。
SQL> startup mount;
ORACLE 例程已經(jīng)啟動,。
Total System Global Area 849530880 bytes
Fixed Size 1377896 bytes
Variable Size 637536664 bytes
Database Buffers 205520896 bytes
Redo Buffers 5095424 bytes
數(shù)據(jù)庫裝載完畢。
SQL> alter database flashback on;
數(shù)據(jù)庫已更改,。
SQL> alter database open;
數(shù)據(jù)庫已更改,。
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
3. 取消閃回恢復(fù)區(qū)
將db_recovery_file_dest參數(shù)設(shè)置為空,,可以停用閃回恢復(fù)區(qū)。如果已經(jīng)啟用flashback database,,則不能取消閃回恢復(fù)區(qū),。
SQL> alter system set db_recovery_file_dest='';
alter system set db_recovery_file_dest=''
*
第 1 行出現(xiàn)錯誤:
ORA-02097: 無法修改參數(shù), 因?yàn)橹付ǖ闹禑o效
ORA-38775: 無法禁用恢復(fù)區(qū) - 閃回數(shù)據(jù)庫已啟用
SQL> shutdown immediate
數(shù)據(jù)庫已經(jīng)關(guān)閉。
已經(jīng)卸載數(shù)據(jù)庫,。
ORACLE 例程已經(jīng)關(guān)閉,。
SQL> startup mount;
ORACLE 例程已經(jīng)啟動。
Total System Global Area 849530880 bytes
Fixed Size 1377896 bytes
Variable Size 637536664 bytes
Database Buffers 205520896 bytes
Redo Buffers 5095424 bytes
數(shù)據(jù)庫裝載完畢,。
SQL> alter database flashback off;
數(shù)據(jù)庫已更改,。
SQL> alter database open;
數(shù)據(jù)庫已更改。
SQL> alter system set db_recovery_file_dest='';
系統(tǒng)已更改,。
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size big integer 3852M
SQL>
注意:
(1)DB_RECOVERY_FILE_DEST_SIZE 只有在 DB_RECOVERY_FILE_DEST 清空之后才可以清空,。
(2)初始化參數(shù) db_recovery_file_dest_size 的設(shè)定有一點(diǎn)點(diǎn)需要注意的地方:
文件的第0塊和操作系統(tǒng)數(shù)據(jù)塊頭的空間大小不包含在內(nèi),該參數(shù)并不代表實(shí)際占用的空間大小,。如果空間被壓縮,、鏡像、RAID 的話,,該參數(shù)的值意義是不一樣的
4. 閃回恢復(fù)區(qū)的內(nèi)容
所有和恢復(fù)相關(guān)的文件都可以存放到閃回恢復(fù)區(qū)
SQL> select file_type from v$flash_recovery_area_usage;
FILE_TYPE
--------------------
CONTROL FILE
REDO LOG
ARCHIVED LOG
BACKUP PIECE
IMAGE COPY
FLASHBACK LOG
FOREIGN ARCHIVED LOG
已選擇7行,。
上面視圖中查詢的結(jié)果列出的所有類型的文件,都可以利用閃回恢復(fù)區(qū)來存放,、管理,。
在一些 10g 的動態(tài)視圖里( V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY 等 )的新的列IS_RECOVERY_DEST_FILE ,指明相關(guān)的文件是否在恢復(fù)區(qū)內(nèi)。
SELECT recid, blocks, is_recovery_dest_file
FROM v$archived_log
WHERE recid < 5;
RECID BLOCKS IS_
---------- ---------- ---
1 14141 NO
2 52 NO
3 7 NO
4 138 NO
SQL>
5 . 閃回恢復(fù)區(qū)的一些限制
如果設(shè)置了閃回恢復(fù)區(qū),,則log_archive_dest和log_archive_duplex_dest將不可用,。
SQL> alter system set log_archive_dest='e:/' ;
alter system set log_archive_dest='e:/'
*
第 1 行出現(xiàn)錯誤:
ORA-02097: 無法修改參數(shù), 因?yàn)橹付ǖ闹禑o效
ORA-16018: 無法將 LOG_ARCHIVE_DEST 與 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用
SQL> alter system set log_archive_duplex_dest='e:/';
alter system set log_archive_duplex_dest='e:/'
*
第 1 行出現(xiàn)錯誤:
ORA-02097: 無法修改參數(shù), 因?yàn)橹付ǖ闹禑o效
ORA-16018: 無法將 LOG_ARCHIVE_DUPLEX_DEST 與 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用
說明:
設(shè)置閃回恢復(fù)區(qū)后,如果沒有設(shè)置過log_archive_dest_n參數(shù),,則歸檔日志默認(rèn)是保存到該區(qū)域的,。實(shí)際上,,oracle是通過隱式的設(shè)置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'來實(shí)現(xiàn)的,。所以,如果修改過log_archive_dest_n將歸檔日志保存到其他位置,,也可以修改該參數(shù)繼續(xù)使用閃回恢復(fù)區(qū),。
多個數(shù)據(jù)庫的閃回恢復(fù)區(qū)可以指定到同一個位置,但是db_name不能一樣,,或者db_unique_name不一樣,。RAC的閃回恢復(fù)區(qū)必須位于共享磁盤上,能被所有實(shí)例訪問,。
6. 閃回恢復(fù)區(qū)的空間管理
閃回恢復(fù)區(qū)中添加或刪除文件等變化都將記錄在數(shù)據(jù)庫的 alert 日志中,,Oracle 10g 也針對該新特性提供了一個新的視圖,, DBA_OUTSTANDING_ALERTS,通過該視圖可以得到相關(guān)的信息,。
SQL> DESC dba_outstanding_alerts
名稱 是否為空? 類型
----------------------------------------- -------- ----------------------------
SEQUENCE_ID NUMBER
REASON_ID NOT NULL NUMBER
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(513)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_TYPE VARCHAR2(64)
REASON VARCHAR2(4000)
TIME_SUGGESTED TIMESTAMP(6) WITH TIME ZONE
CREATION_TIME TIMESTAMP(6) WITH TIME ZONE
SUGGESTED_ACTION VARCHAR2(4000)
ADVISOR_NAME VARCHAR2(30)
METRIC_VALUE NUMBER
MESSAGE_TYPE VARCHAR2(12)
MESSAGE_GROUP VARCHAR2(64)
MESSAGE_LEVEL NUMBER
HOSTING_CLIENT_ID VARCHAR2(64)
MODULE_ID VARCHAR2(64)
PROCESS_ID VARCHAR2(128)
HOST_ID VARCHAR2(256)
HOST_NW_ADDR VARCHAR2(256)
INSTANCE_NAME VARCHAR2(16)
INSTANCE_NUMBER NUMBER
USER_ID VARCHAR2(30)
EXECUTION_CONTEXT_ID VARCHAR2(128)
ERROR_INSTANCE_ID VARCHAR2(142)
在閃回恢復(fù)區(qū)中的空間使用超過 85% 的時候,,數(shù)據(jù)庫將會向 alert 文件中寫入告警信息。而當(dāng)超過 97% 的時候?qū)懭?STRONG>嚴(yán)重告警信息,。當(dāng)閃回恢復(fù)區(qū)空間不夠的時候,,Oracle將報告如下類似的錯誤:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 52428800 bytes disk space from 1258291200 limit
這個時候查詢 dba_outstanding_alerts:
SQL> select reason,object_type,suggested_action from dba_outstanding_alerts;
REASON OBJECT_TYPE SUGGESTED_ACTION
------------------------------ -------------------- ----------------------------------------
db_recovery_file_dest_size of RECOVERY AREA Add disk space and increase db_recovery_
1258291200 bytes is 88.20% use file_dest_size, backup files to tertiary
d and has 148509184 remaining device, delete files from recovery area
bytes available. using RMAN, consider changing RMAN rete
ntion policy or consider changing RMAN a
rchivelog deletion policy.
同時,oracle在alert中還會給出解決該問題的建議
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMANB ACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating system command was used to delete files, then use RMAN CROSSCHECK and DELETE EXPIRED commands.
************************************************************************
V$RECOVERY_FILE_DEST視圖 包含閃回恢復(fù)區(qū)的相關(guān)信息:
SQL> desc V$RECOVERY_FILE_DEST
名稱 是否為空? 類型
----------------------------------------- -------- ---------------------
NAME VARCHAR2(513)
SPACE_LIMIT NUMBER
SPACE_USED NUMBER
SPACE_RECLAIMABLE NUMBER
NUMBER_OF_FILES NUMBER
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
---------- ----------- ---------- ----------------- ---------------
4039114752 0 0 0
通過查詢視圖v$flash_recovery_area_usage,,可以獲得當(dāng)前閃回恢復(fù)區(qū)的空間使用情況,,并且可以知道是哪些文件占中了空間,據(jù)此可以做出相應(yīng)的處理,,或者加大閃回恢復(fù)區(qū),,或者移走相應(yīng)的文件。
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
CONTROL FILE 0 0
REDO LOG 0 0
ARCHIVED LOG 0 0
BACKUP PIECE 0 0
IMAGE COPY 0 0
FLASHBACK LOG 0 0
FOREIGN ARCHIVED LOG 0 0
如果閃回恢復(fù)區(qū)空間耗盡,,且歸檔路徑設(shè)置到了閃回恢復(fù)區(qū)中,,則由于日志無法歸檔,數(shù)據(jù)庫會hang住,。所以,,對于生產(chǎn)庫,如果將歸檔放到閃回恢復(fù)區(qū)中,,需要密切關(guān)注閃回恢復(fù)區(qū)的空間使用情況,,否則一旦閃回恢復(fù)區(qū)的空間用盡,將導(dǎo)致數(shù)據(jù)庫無法提供服務(wù),。