日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle之Flash Recovery Area全面介绍

發布時間:2024/8/26 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle之Flash Recovery Area全面介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1.?設置閃回恢復區
閃回恢復區主要通過3個初始化參數來設置和管理

db_recovery_file_dest指定閃回恢復區的位置
db_recovery_file_dest_size
指定閃回恢復區的可用空間大小

db_flashback_retention_target指定數據庫可以回退的時間,單位為分鐘,默認1440分鐘,也就是一天。當然,實際上可回退的時間還決定于閃回恢復區的大小,因為里面保存了回退所需要的flash log。所以這個參數要和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

默認情況數據庫的flashback database是關閉,可以在mount exclusive狀態下打開。在設置了閃回恢復區后,可以啟動閃回數據庫功能。


SQL> archive log list; --
數據庫必須已經處于歸檔模式

數據庫日志模式?存檔模式

自動存檔?啟用

存檔終點?d:\archivelog

最早的聯機日志序列?60

下一個存檔日志序列?62

當前日志序列?62

SQL> shutdown immediate;

數據庫已經關閉。

已經卸載數據庫。

ORACLE?例程已經關閉。

SQL> startup mount;

ORACLE?例程已經啟動。

Total System Global Area 849530880 bytes

Fixed Size 1377896 bytes

Variable Size 637536664 bytes

Database Buffers 205520896 bytes

Redo Buffers 5095424 bytes

數據庫裝載完畢。

SQL> alter database flashback on;

數據庫已更改。

SQL> alter database open;

數據庫已更改。

SQL> select flashback_on from v$database;

FLASHBACK_ON

------------------

YES

?

?

3.?取消閃回恢復區
db_recovery_file_dest參數設置為空,可以停用閃回恢復區。如果已經啟用flashback database,則不能取消閃回恢復區。

?

SQL> alter system set db_recovery_file_dest='';

alter system set db_recovery_file_dest=''

*

?1?行出現錯誤:

ORA-02097:?無法修改參數,?因為指定的值無效

ORA-38775:?無法禁用恢復區?-?閃回數據庫已啟用

SQL> shutdown immediate

數據庫已經關閉。

已經卸載數據庫。

ORACLE?例程已經關閉。

SQL> startup mount;

ORACLE?例程已經啟動。

Total System Global Area 849530880 bytes

Fixed Size 1377896 bytes

Variable Size 637536664 bytes

Database Buffers 205520896 bytes

Redo Buffers 5095424 bytes

數據庫裝載完畢。

SQL> alter database flashback off;

數據庫已更改。

SQL> alter database open;

數據庫已更改。

SQL> alter system set db_recovery_file_dest='';

系統已更改。

SQL> show parameter db_recovery_file_dest

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest string

db_recovery_file_dest_size big integer 3852M

SQL>

?

?

注意:

1DB_RECOVERY_FILE_DEST_SIZE?只有在?DB_RECOVERY_FILE_DEST?清空之后才可以清空。

2)初始化參數?db_recovery_file_dest_size?的設定有一點點需要注意的地方:

文件的第0塊和操作系統數據塊頭的空間大小不包含在內,該參數并不代表實際占用的空間大小。如果空間被壓縮、鏡像、RAID?的話,該參數的值意義是不一樣的

?

?

4.?閃回恢復區的內容
所有和恢復相關的文件都可以存放到閃回恢復區
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行。

?

上面視圖中查詢的結果列出的所有類型的文件,都可以利用閃回恢復區來存放、管理。

?

在一些?10g?的動態視圖里( V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY??)的新的列IS_RECOVERY_DEST_FILE ,指明相關的文件是否在恢復區內。

?

?

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 .?閃回恢復區的一些限制
如果設置了閃回恢復區,則log_archive_destlog_archive_duplex_dest將不可用。


SQL> alter system set log_archive_dest='e:/' ;

alter system set log_archive_dest='e:/'

*

?1?行出現錯誤:

ORA-02097:?無法修改參數,?因為指定的值無效

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?行出現錯誤:

ORA-02097:?無法修改參數,?因為指定的值無效

ORA-16018:?無法將?LOG_ARCHIVE_DUPLEX_DEST??LOG_ARCHIVE_DEST_n?

DB_RECOVERY_FILE_DEST?一起使用

?

說明:

設置閃回恢復區后,如果沒有設置過log_archive_dest_n參數,則歸檔日志默認是保存到該區域的。實際上,oracle是通過隱式的設置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'來實現的。所以,如果修改過log_archive_dest_n將歸檔日志保存到其他位置,也可以修改該參數繼續使用閃回恢復區。

多個數據庫的閃回恢復區可以指定到同一個位置,但是db_name不能一樣,或者db_unique_name不一樣。RAC的閃回恢復區必須位于共享磁盤上,能被所有實例訪問。

?

?

6.?閃回恢復區的空間管理

閃回恢復區中添加或刪除文件等變化都將記錄在數據庫的?alert?日志中,Oracle 10g?也針對該新特性提供了一個新的視圖,?DBA_OUTSTANDING_ALERTS,通過該視圖可以得到相關的信息。

?

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)

?

?

在閃回恢復區中的空間使用超過?85%?的時候,數據庫將會向?alert?文件中寫入告警信息。而當超過?97%?的時候將會寫入嚴重告警信息。當閃回恢復區空間不夠的時候,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.

?

?

同時,oraclealert中還會給出解決該問題的建議
************************************************************************
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視圖?包含閃回恢復區的相關信息:

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,可以獲得當前閃回恢復區的空間使用情況,并且可以知道是哪些文件占中了空間,據此可以做出相應的處理,或者加大閃回恢復區,或者移走相應的文件。


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

?

如果閃回恢復區空間耗盡,且歸檔路徑設置到了閃回恢復區中,則由于日志無法歸檔,數據庫會hang住。所以,對于生產庫,如果將歸檔放到閃回恢復區中,需要密切關注閃回恢復區的空間使用情況,否則一旦閃回恢復區的空間用盡,將導致數據庫無法提供服務。

總結

以上是生活随笔為你收集整理的oracle之Flash Recovery Area全面介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。