如何检查Oracle的归档空间是否满了

如何检查Oracle的归档空间是否满了
最新回答
时光暖心

2026-10-22 22:10:35

具体看一下是什么操作系统,在此举例Linux系统
默认情况下我们在dbca建库时,会把归档放在$Oracle_HOME/ flash_recovery_area 下,并且oracle默认给FRA配置的大为2G:
这里需要满足两个参数:
db_recovery_file_dest string /oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G

如果db_recovery_file_dest 下的存放的归档大小达到db_recovery_file_dest_size 即使该目录下仍然有磁盘空间剩余,oracle也不会去写。

归档空间是否已经满了?
1.首先从系统层面确定归档目录存放的磁盘空间情况:
[oracle@localhost bdump]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 26G 12G 14G 46% /
/dev/sda2 19G 16G 2.8G 85% /oracle
/dev/sda1 99M 24M 71M 25% /boot
tmpfs 978M 508M 470M 52% /dev/shm

2. 确定归档存放目录,归档存放目录大小
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST -------这里默认使用的是DB_RECOVERY_FILE_DEST
Oldest online log sequence 17
Next log sequence to archive 20
Current log sequence 20

----也可以按照以下方式查询归档放置的地方
SQL> show parameter db_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_keep_cache_size big integer 0
db_name string lixora
db_recovery_file_dest string /oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2G
db_recycle_cache_size big integer 0
db_unique_name string lixora

-----这里可以看到闪回恢复区里的空间使用情况:
SQL> select * From v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 4.88 0 1
ARCHIVELOG 76.05 0 47
BACKUPPIECE 3.1 0 3
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
6 rows selected.

------注意这一步才是真正查看归档空间的实际使用情况:
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---- --------------- -------------------
/oracle/flash_recovery_area 2147483648 1804771840 0 51

但是还是在系统层面去查看磁盘空间。

希望对你有帮助!
我咋那么萌捏

2026-07-13 13:13:06

什么操作系统的。