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 的路径中,可根据排查步骤逐一确认并解决。