ORA-19809 & ORA-19804

当Oracle数据库遇到DB_RECOVERY_FILE_DEST_SIZE限制问题时,有五种解决方案:定期备份恢复区,调整RMAN保留策略,修改归档日志删除策略,增加磁盘空间或手动删除恢复区文件。这些措施有助于解决磁盘空间不足的问题并优化数据库性能。

在这里插入图片描述

19804, 00000, "cannot reclaim %s bytes disk space from %s limit"
// *Cause: Oracle cannot reclaim disk space of specified bytes from the
//         DB_RECOVERY_FILE_DEST_SIZE limit.
// *Action: There are five possible solutions:
//          1) Take frequent backup of recovery area using RMAN.
//          2) Consider changing RMAN retention policy.
//          3) Consider changing RMAN archived log deletion policy.
//          4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
//          5) Delete files from recovery area using RMAN.
19809, 00000, "limit exceeded for recovery files"
//*Cause: The limit for recovery files specified by the
//        DB_RECOVERY_FILE_DEST_SIZE was exceeded.
// *Action: There are five possible solutions:
//          1) Take frequent backup of recovery area using RMAN.
//          2) Consider changing RMAN retention policy.
//          3) Consider changing RMAN archived log deletion policy.
//          4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
//          5) Delete files from recovery area using RMAN.
19804, 00000,“无法从%s限制中回收%s字节的磁盘空间”

//*原因:Oracle无法从数据库中回收指定字节的磁盘空间

//数据库恢复文件目标大小限制。

//*行动:有五种可能的解决方案:

//1)使用RMAN对恢复区域进行频繁备份。

//2)考虑更改RMAN保留策略。

//3)考虑更改RMAN归档日志删除策略。

//4)增加磁盘空间并增加DB_RECOVERY_FILE_DEST_大小。

//5)使用RMAN从恢复区域删除文件。
show parameter db_recovery_file_dest;


alter system set db_recovery_file_dest_size=20g scope=both;

在这里插入图片描述

backup as compressed backupset database format '+SSDDG1/baipx/baipx_full_%d_%s' plus archivelog;

在这里插入图片描述
BACKUP AS COMPRESSED BACKUPSET DATABASE;

  1. 备份和还原的时候的压缩和解压缩,是由RMAN完成的,不需要额外的过程。
  2. compressed参数只对备份集进行压缩,image copy 不能使用该参数。image copy就是copy原始的文件。原始的文件多大,image copy就多大。
  3. 二进制压缩在备份和还原操作期间会产生一些性能开销。会消耗CPU。降低带宽的使用率。

在这里插入图片描述

在AIX系统下,Oracle数据库出现`ORA-19809`和`ORA-19804`错误通常与归档日志文件的管理有关,特别是在归档目标目录空间不足或无法成功删除过期的归档日志时。以下是这两个错误的详细解释和解决方案。 ### ORA-19809: limit exceeded for recovery files 该错误表示数据库的恢复文件(如归档日志、RMAN备份等)数量或大小超过了设定的限制。Oracle通过`db_recovery_file_dest_size`参数控制快速恢复区(Fast Recovery Area, FRA)的总大小。当FRA中存储的文件超过该限制时,数据库将无法继续生成新的归档日志或备份文件,并抛出`ORA-19809`错误[^1]。 ### ORA-19804: cannot reclaim space from recovery files 该错误通常紧随`ORA-19809`之后发生,表示Oracle无法自动回收FRA中的空间。这可能是因为过期的归档日志未能被自动删除,或者RMAN配置中未启用自动删除策略[^2]。 ## 解决方案 ### 1. 检查快速恢复区使用情况 可以使用以下SQL语句查看FRA的使用情况: ```sql SELECT NAME AS file_type, SPACE_LIMIT AS total_space, SPACE_USED AS used_space, SPACE_RECLAIMABLE AS reclaimable_space, NUMBER_OF_FILES AS num_files FROM v$recovery_area_usage; ``` ### 2. 扩展快速恢复区大小 如果发现FRA空间不足,可以通过增大`db_recovery_file_dest_size`参数来扩展空间: ```sql ALTER SYSTEM SET db_recovery_file_dest_size = 20G; ``` ### 3. 手动清理归档日志 可以手动删除不再需要的归档日志以释放空间。使用RMAN执行以下命令: ```bash RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; ``` 此命令将删除7天前的所有归档日志。 ### 4. 配置RMAN归档删除策略 为防止类似问题再次发生,建议配置RMAN的归档删除策略。例如,设置归档日志保留策略为7天: ```bash RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DISK; RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; ``` ### 5. 检查归档目标目录权限 确保Oracle数据库具有对归档目标目录的读写权限。在AIX系统中,可以通过以下命令检查和修改目录权限: ```bash ls -ld /u01/oradata/archivelog chown -R oracle:dba /u01/oradata/archivelog chmod -R 750 /u01/oradata/archivelog ``` ### 6. 检查归档进程状态 确认归档进程是否正常运行,可以使用以下命令: ```sql SELECT archiver, log_switch_wait FROM v$database; ``` 如果归档进程被阻塞,需要进一步排查归档目标路径是否可用、磁盘空间是否充足等问题。 ## 预防措施 - 定期监控FRA使用情况,确保空间充足。 - 启用并维护合理的RMAN归档删除策略。 - 设置自动清理脚本或计划任务,定期删除过期归档日志。 -数据库参数文件中配置合理的`db_recovery_file_dest`和`db_recovery_file_dest_size`值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值