?1. RECOVERY_FILE_DEST
視圖的作用
RECOVERY_FILE_DEST
是 Oracle 數據庫用于 管理快速恢復區(Fast Recovery Area, FRA) 的一個視圖。FRA 是 Oracle 提供的一種集中存儲恢復相關文件(如歸檔日志、備份文件、閃回日志等)的區域。
RECOVERY_FILE_DEST
視圖的主要作用
- 顯示快速恢復區的路徑和狀態:
- 快速恢復區的配置路徑。
- 快速恢復區的總大小和當前使用情況。
- 監控 FRA 的使用情況:
- Oracle 會自動計算 FRA 的空間使用情況,幫助管理員判斷是否需要清理空間或擴展 FRA。
- 歸檔日志的存儲管理:
- 如果配置了 FRA,歸檔日志默認會存儲在 FRA 中。
相關視圖示例
可以通過以下查詢查看 FRA 的配置和使用情況:
sql
SELECT SPACE_LIMIT, SPACE_USED, SPACE_RECLAIMABLE, NUMBER_OF_FILES
FROM V$RECOVERY_FILE_DEST;
SPACE_LIMIT
:快速恢復區的總大小(以字節為單位)。SPACE_USED
:當前已使用的空間大小。SPACE_RECLAIMABLE
:可以被回收的空間大小(如被標記為過期的備份或歸檔日志)。NUMBER_OF_FILES
:FRA 中的文件總數。
2. RECOVERY_FILE_DEST
與歸檔日志的關系
2.1 FRA 與歸檔日志
-
如果啟用了快速恢復區(FRA),歸檔日志會默認存儲在 FRA 中。
- FRA 的路徑由參數
DB_RECOVERY_FILE_DEST
指定。 - FRA 的大小由參數
DB_RECOVERY_FILE_DEST_SIZE
限制。
- FRA 的路徑由參數
-
Oracle 會自動管理 FRA 中的歸檔日志:
- 當 FRA 的空間使用接近
DB_RECOVERY_FILE_DEST_SIZE
時,Oracle 會嘗試刪除不再需要的文件(如過期的備份)以釋放空間。 - 如果無法釋放足夠的空間,可能會導致歸檔進程(
ARCH
)掛起。
- 當 FRA 的空間使用接近
2.2 不使用 FRA 存儲歸檔日志
- 如果沒有配置 FRA,歸檔日志會存儲在由參數
LOG_ARCHIVE_DEST_n
指定的路徑中(n
是 1 到 31 的整數)。- 在這種情況下,FRA (
RECOVERY_FILE_DEST
) 不會影響歸檔日志的位置,V$RECOVERY_FILE_DEST
的相關值會顯示為 0。
- 在這種情況下,FRA (
3. 配置和查詢歸檔日志相關參數
除了 RECOVERY_FILE_DEST
,還有其他方式可以配置和查詢歸檔日志的存儲位置、大小和使用情況。
3.1 配置歸檔日志存儲位置
3.1.1 使用 LOG_ARCHIVE_DEST_n
-
不啟用 FRA 時,歸檔日志位置由
LOG_ARCHIVE_DEST_n
參數決定。 -
可以通過以下命令查看當前歸檔日志的存儲位置:
sql
-
SHOW PARAMETER LOG_ARCHIVE_DEST;
-
如果需要修改歸檔日志的存儲位置,可以通過以下命令配置:
sql
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/path/to/archive_logs';
說明:
LOG_ARCHIVE_DEST_n
支持多種格式,如LOCATION
(本地路徑)或SERVICE
(遠程路徑)。- 例如:
sql
-
-
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='SERVICE=standby_db';
-
3.1.2 啟用快速恢復區
-
如果啟用了 FRA(通過配置
DB_RECOVERY_FILE_DEST
),歸檔日志默認會存儲在 FRA 中。 -
配置 FRA 的命令:
sql
-
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/path/to/recovery_area'; ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20G;
-
如果同時配置了 FRA 和
LOG_ARCHIVE_DEST_n
,優先級如下:- 如果
LOG_ARCHIVE_DEST_n
存在,則歸檔日志存儲在指定路徑。 - 如果未配置
LOG_ARCHIVE_DEST_n
,則歸檔日志存儲在 FRA。
- 如果
3.2 查詢歸檔模式和相關參數
-
檢查數據庫是否啟用了歸檔模式
- 使用以下命令查看數據庫是否處于歸檔模式:
sql
- 使用以下命令查看數據庫是否處于歸檔模式:
ARCHIVE LOG LIST;
輸出示例:
text
-
-
Database log mode Archive Mode Automatic archival Enabled Archive destination /path/to/archive_logs
-
-
查詢歸檔日志的存儲參數
-
查詢所有歸檔相關參數:
sql
-
SHOW PARAMETER ARCHIVE;
輸出示例:
text
-
-
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string LOCATION=/path/to/archive_logs log_archive_dest_state_1 string enable log_archive_format string %t_%s_%r.dbf log_archive_max_processes integer 4
-
-
查詢歸檔日志的使用情況
- 查看歸檔日志的實際存儲位置和大小:
sql
- 查看歸檔日志的實際存儲位置和大小:
-
-
重要字段說明:SELECT * FROM V$ARCHIVED_LOG;
NAME
:歸檔日志的存儲路徑。BLOCKS
:歸檔日志的大小。COMPLETION_TIME
:歸檔日志的生成時間。
-
3.3 配置歸檔日志的大小限制
-
調整快速恢復區大小
- 如果 FRA 用于存儲歸檔日志,可以通過以下命令調整 FRA 的大小:
sql
- 如果 FRA 用于存儲歸檔日志,可以通過以下命令調整 FRA 的大小:
-
-
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=50G;
-
-
限制單個歸檔日志文件的大小
- Oracle 支持通過
LOG_ARCHIVE_MAXSIZE
限制單個歸檔日志文件的大小:sql
- Oracle 支持通過
-
-
ALTER SYSTEM SET LOG_ARCHIVE_MAXSIZE='1G';
-
-
調整歸檔進程并發數
- 通過
LOG_ARCHIVE_MAX_PROCESSES
參數調整歸檔進程的數量:sql
- 通過
-
-
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;
-
4. 當前情況的分析
問題描述:在 Oracle RAC 數據庫中,
V$RECOVERY_FILE_DEST
查詢出來的歸檔日志總大小和使用大小為0
。
這種情況的可能原因如下:
-
未啟用 FRA
- 如果未配置
DB_RECOVERY_FILE_DEST
,則快速恢復區未啟用,V$RECOVERY_FILE_DEST
的值會顯示為0
。 - 歸檔日志可能通過
LOG_ARCHIVE_DEST_n
存儲在其他路徑。
- 如果未配置
-
歸檔日志存儲在非 FRA 的路徑
- 通過
LOG_ARCHIVE_DEST_n
配置的路徑存儲了歸檔日志,而不是 FRA。
- 通過
-
歸檔模式未啟用
- 如果數據庫未處于歸檔模式,則不會生成歸檔日志,
V$RECOVERY_FILE_DEST
中的值為0
。
- 如果數據庫未處于歸檔模式,則不會生成歸檔日志,
5. 排查和解決步驟
-
檢查 FRA 是否啟用
sql
SHOW PARAMETER DB_RECOVERY_FILE_DEST;
SHOW PARAMETER DB_RECOVERY_FILE_DEST_SIZE;
如果未啟用 FRA,可以通過以下命令啟用:
sql
-
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/path/to/fra'; ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=50G;
-
檢查歸檔日志的存儲路徑
sql
SHOW PARAMETER LOG_ARCHIVE_DEST;
如果未配置 LOG_ARCHIVE_DEST_n
,可以通過以下命令設置:
sql
-
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/path/to/archive_logs';
-
檢查歸檔模式
- 確認數據庫是否處于歸檔模式:
sql
- 確認數據庫是否處于歸檔模式:
-
ARCHIVE LOG LIST;
- 如果未啟用歸檔模式,可以使用以下命令啟用:
sql
-
-
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
-
-
查詢歸檔日志的存儲和大小
- 查詢歸檔日志的實際路徑和大小:
sql
- 查詢歸檔日志的實際路徑和大小:
-
-
SELECT NAME, BLOCKS, COMPLETION_TIME FROM V$ARCHIVED_LOG;
-
總結
V$RECOVERY_FILE_DEST
是用于監控快速恢復區(FRA)的視圖,只有啟用了 FRA 且歸檔日志存儲在 FRA 中,該視圖才會顯示非零值。- 如果未啟用 FRA,可以通過
LOG_ARCHIVE_DEST_n
配置歸檔日志的存儲路徑。 - 歸檔日志的大小和存儲路徑可以通過
LOG_ARCHIVE_MAXSIZE
和LOG_ARCHIVE_DEST_n
參數進行調整和監控。 - 當前問題可能是 FRA 未啟用或歸檔日志存儲在非 FRA 的路徑中,可根據排查步驟逐一確認并解決。