Oracle 10g 有一項新功能稱(chēng)為:自動(dòng)的基于磁盤(pán)的備份與恢復( Automatic Disk-Based Backup and Recovery )。實(shí)現該功能的基礎為本文要講述的閃回恢復區( Flash Recovery Area )。閃回恢復區是 Oracle 10g 中的新事物。簡(jiǎn)單的說(shuō),閃回恢復區是一塊用以存儲恢復相關(guān)的文件的存儲空間。允許用戶(hù)集中存儲所有恢復相關(guān)的文件。
閃回恢復區可以放在如下幾種存儲形式上:
在 RAC 環(huán)境中,這個(gè)該位置必須為 集群文件系統 (cluster file system) 或是 ASM 磁盤(pán)組亦或是通過(guò) NFS 控制的文件共享目錄,還要注意的是,所有實(shí)例的位置和操作系統的磁盤(pán)限額 (disk quota) 必須一致。
如下幾種文件可以放到閃回恢復區中:
如前所述,閃回恢復區提供了一個(gè)集中化的存儲區域,很大程度上減小了管理開(kāi)銷(xiāo)。這是其最主要的優(yōu)點(diǎn)。與 RMAN 結合使用可以進(jìn)行快速恢復。
近年來(lái)隨著(zhù)存儲技術(shù)的發(fā)展,單個(gè)磁盤(pán)的存儲能力已經(jīng)加強。這使自動(dòng)的基于磁盤(pán)的備份與恢復的技術(shù)實(shí)現成為可能。而閃回恢復區恰是基于磁盤(pán)的備份與恢復的基礎。把閃回恢復區和 OMF 與 ASM 結合運用看起來(lái)是比較完美的方案。當然,不可否認的是,自動(dòng)備份恢復技術(shù)還遠遠不夠成熟。
如果您使用DBCA創(chuàng )建的數據庫,在安裝時(shí)可以設定閃回恢復區的位置以及大小(點(diǎn)擊這里查看安裝截圖)--這也是 Oracle 10g OUI 的新功能之一。如果在開(kāi)始的時(shí)候沒(méi)有啟用閃回恢復區,可以通過(guò)如下方式設定。
調整如下兩個(gè)動(dòng)態(tài)初始化參數(無(wú)需重新啟動(dòng)實(shí)例):
之后查看所作的修改是否生效:SQL> ALTER SYSTEM SET db_recovery_file_dest_size=2g SCOPE=BOTH;System altered.SQL>SQL> ALTER SYSTEM SET db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'2 SCOPE=BOTH;System altered.SQL>
SQL> SHOW parameter db_recovery_file_destNAME TYPE VALUE-------------------------------- ----------- -----------------------------------db_recovery_file_dest string /u01/app/oracle/flash_recovery_areadb_recovery_file_dest_size big integer 2GSQL>
如上所示,我們設定了閃回恢復區,位置在 /u01/app/oracle/flash_recovery_area,上限為2G。如果要撤銷(xiāo)閃回恢復區,把初始化參數 DB_RECOVERY_FILE_DEST 的值清空即可。
注意: DB_RECOVERY_FILE_DEST_SIZE 只有在 DB_RECOVERY_FILE_DEST 清空之后才可以清空。
初始化參數 db_recovery_file_dest_size 的設定有一點(diǎn)點(diǎn)需要注意的地方:
我們先看看閃回恢復區內的文架結構層次
SQL> host tree /u01/app/oracle/flash_recovery_area/u01/app/oracle/flash_recovery_area|-- DEMO| |-- archivelog| | |-- 2004_12_07| | | |-- o1_mf_1_10_0vbwz2fm_.arc| | | |-- o1_mf_1_11_0vc1yj14_.arc| | | |-- o1_mf_1_12_0vc6vvws_.arc| | | |-- o1_mf_1_13_0vcbv6cg_.arc| | | |-- o1_mf_1_14_0vchlxb3_.arc| | | |-- o1_mf_1_15_0vcnh2bz_.arc| | | |-- o1_mf_1_5_0vbk8goo_.arc| | | |-- o1_mf_1_6_0vbkq6dk_.arc| | | |-- o1_mf_1_7_0vbktl5f_.arc| | | |-- o1_mf_1_8_0vbo97xp_.arc| | | `-- o1_mf_1_9_0vbrrlo6_.arc| | `-- 2004_12_08| | |-- o1_mf_1_16_0vcnyqvf_.arc| | |-- o1_mf_1_17_0vcp58bj_.arc| | |-- o1_mf_1_18_0vcv4qxb_.arc| | |-- o1_mf_1_19_0vczcsl0_.arc| | |-- o1_mf_1_20_0vd34svw_.arc| | |-- o1_mf_1_21_0vd7tg4h_.arc| | |-- o1_mf_1_22_0vddq7lc_.arc| | |-- o1_mf_1_23_0vdk0nbh_.arc| | |-- o1_mf_1_24_0vdojjky_.arc| | |-- o1_mf_1_25_0vdtg1rq_.arc| | |-- o1_mf_1_26_0vdz23h2_.arc| | |-- o1_mf_1_27_0vf3nlnw_.arc| | |-- o1_mf_1_28_0vf6hon5_.arc| | |-- o1_mf_1_29_0vf867lt_.arc| | |-- o1_mf_1_30_0vf86pkg_.arc| | `-- o1_mf_1_31_0vfjphqm_.arc| `-- backupset| |-- 2004_12_07| | |-- o1_mf_ncsn1_TAG20041207T150715_0vboq7kv_.bkp| | `-- o1_mf_nnnd1_TAG20041207T150715_0vboo3t2_.bkp| `-- 2004_12_08| |-- o1_mf_ncsnf_TAG20041208T161219_0vffxv2n_.bkp| |-- o1_mf_ncsnf_TAG20041208T165456_0vfjcvgl_.bkp| `-- o1_mf_nnndf_TAG20041208T161219_0vffv40q_.bkp`-- tracking.dbf7 directories, 33 files
閃回恢復區中添加或刪除文件等變化都將記錄在數據庫的 alert 日志中,Oracle 10g 也針對該新特性提供了一個(gè)新的視圖, DBA_OUTSTANDING_ALERTS,通過(guò)該視圖可以得到相關(guān)的信息。
DBA_OUTSTANDING_ALERTS 視圖的存在體現了 Oracle 愈加人性化的一面。我們先來(lái)看一下該視圖的基本結構,后面會(huì )用到。
SQL> DESC dba_outstanding_alertsName Null? Type----------------------------------------- -------- ----------------------------SEQUENCE_ID NUMBERREASON_ID NOT NULL NUMBEROWNER VARCHAR2(30)OBJECT_NAME VARCHAR2(513)SUBOBJECT_NAME VARCHAR2(30)OBJECT_TYPE VARCHAR2(64)REASON VARCHAR2(4000)TIME_SUGGESTED TIMESTAMP(6) WITH TIME ZONECREATION_TIME TIMESTAMP(6) WITH TIME ZONESUGGESTED_ACTION VARCHAR2(4000)ADVISOR_NAME VARCHAR2(30)METRIC_VALUE NUMBERMESSAGE_TYPE VARCHAR2(12)MESSAGE_GROUP VARCHAR2(64)MESSAGE_LEVEL NUMBERHOSTING_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 NUMBERUSER_ID VARCHAR2(30)EXECUTION_CONTEXT_ID VARCHAR2(60)ERROR_INSTANCE_ID VARCHAR2(142)SQL>
10g 的新視圖 V$RECOVERY_FILE_DEST 包含閃回恢復區的相關(guān)信息:
SQL> desc V$RECOVERY_FILE_DESTName Null? Type----------------------------------------- -------- ----------------------------NAME VARCHAR2(513)SPACE_LIMIT NUMBERSPACE_USED NUMBERSPACE_RECLAIMABLE NUMBERNUMBER_OF_FILES NUMBERSQL> SELECT NAME, space_limit, space_used, space_reclaimable space_rec,2 number_of_files file_num3 FROM v$recovery_file_dest;NAME SPACE_LIMIT SPACE_USED SPACE_REC FILE_NUM----------------------------------- ----------- ---------- ---------- ----------/u01/app/oracle/flash_recovery_area 2147483648 1106849280 602410496 30SQL>
在一些 10g 的動(dòng)態(tài)視圖里( V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY 等 )的新的列 IS_RECOVERY_DEST_FILE ,指明相關(guān)的文件是否在恢復區內。
SQL> SELECT recid, blocks, is_recovery_dest_file2 FROM v$archived_log3 WHERE recid < 5;RECID BLOCKS IS_RECOVERY_DEST_FILE---------- ---------- ----------------------------------------1 20072 YES2 19566 YES3 19566 YES4 19566 YESSQL>
在閃回恢復區中的空間使用超過(guò) 85% 的時(shí)候,數據庫將會(huì )向 alert 文件中寫(xiě)入告警信息。而當超過(guò) 97% 的時(shí)候將會(huì )寫(xiě)入嚴重告警信息。當閃回恢復區空間不夠的時(shí)候,Oracle將報告如下類(lèi)似的錯誤:
ORA-19809: limit exceeded for recovery filesORA-19804: cannot reclaim 52428800 bytes disk space from 1258291200 limit
這個(gè)時(shí)候查詢(xún) 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 tertiaryd and has 148509184 remaining device, delete files from recovery areabytes available. using RMAN, consider changing RMAN retention policy or consider changing RMAN archivelog deletion policy.1 rows selected.SQL>
會(huì )給出相關(guān)的原因和建議的操作。
自動(dòng)化的東西總是給人不確定性。如果您在測試環(huán)境中啟用了閃回恢復區,那么一定要注意監控空間的使用。在生產(chǎn)數據庫上使用(如果有這樣的人的話(huà)),必須要把閃回恢復區放到單獨的磁盤(pán)上。
本文介紹了閃回恢復區 -- Oracle 10g 的又一個(gè)華而不實(shí)的新功能 -- 的基本功能。在后續的文檔中我會(huì )結合RMAN的新特性展示閃回恢復區的其他方面。
Oracle Database Backup and Recovery Basics 10g Release 1 (10.1)
Part Number B10735-01
在 http://tahiti.oracle.com 可以得到最新的 Oracle 參考文檔。
聯(lián)系客服