ORA-19804: cannot reclaim N bytes disk space from M bytes limit(无法从 M 字节的限制中回收 N 字节磁盘空间)
Oracle含义
Oracle 试图在快速恢复区(FRA)中为新文件(归档日志、备份、闪回日志)腾出空间,但由于已达到 DB_RECOVERY_FILE_DEST_SIZE 定义的逻辑限制,无法回收所需空间。
原因
FRA 大小(DB_RECOVERY_FILE_DEST_SIZE)是独立于物理磁盘的上限,归档日志、RMAN 备份或闪回日志已将其占满。根本原因通常是归档日志未定期备份和删除,或过时的备份未被清理。
解决方法
查看 FRA 使用情况:SELECT * FROM v$recovery_area_usage; 以及 SELECT * FROM v$recovery_file_dest; 将归档日志备份到 FRA 之外的目标并删除(RMAN:BACKUP ARCHIVELOG ALL FORMAT '/backup/arc_%U' DELETE INPUT;),或清理不再需要的备份(RMAN:DELETE OBSOLETE;)。使用 Data Guard 时,不要删除尚未在备库应用的归档日志。作为永久方案,如果有磁盘空间,增大 DB_RECOVERY_FILE_DEST_SIZE。如果不需要 Flashback Database,考虑将其禁用。
同一数据库的其他条目
- ORA-07445exception encountered: core dump(遇到异常:core dump)
- ORA-01102cannot mount database in EXCLUSIVE mode(无法以 EXCLUSIVE 模式装载数据库)
- ORA-29913error in executing ODCIEXTTABLEOPEN callout(执行 ODCIEXTTABLEOPEN callout 时出错)
- ORA-00494enqueue held for too long by 'inst N, osid M'(enqueue 被 'inst N, osid M' 持有时间过长)
- ORA-04021timeout occurred while waiting to lock object(等待锁定对象时超时)
- ORA-04061existing state of package/procedure has been invalidated(包/过程的现有状态已失效)
- ORA-01466unable to read data - table definition has changed(无法读取数据 —— 表定义已更改)