201811 月发表在 笔记

15Oracle RAC 集群因归档空间满而无法连接的解决办法

近日学校一新系统的实施工程师报告无法连接到系统所使用的数据库,报错信息为“archiver error”归档错误,初步判断是归档日志空间写满造成的此错误。

TIM图片20181115205626.png

使用 crsctl status res -t 命令查询集群状态,显示数据库实例处于“Stuck Archiver”状态。

Oracle Stuck Archiver 1.png
归档日志记录的是对数据进行的历史操作(如 DML 操作),主要用于在数据文件损坏时对数据库进行恢复,所以删除较早的归档日志并不会影响数据库的正常运行。使用 oraenv 将环境变量切换到数据库实例下,运行 rman target / 使用 RMAN 工具连接数据库实例。输入如下命令删除 10 天以前的归档日志:

DELETE ARCHIVELOG UNTIL TIME 'SYSDATE - 10';

Oracle Stuck Archiver 2.png
RMAN 将会列出所有10天前的归档日志文件,并询问是否确认删除。输入“YES”并回车继续删除。

Oracle Stuck Archiver 3.png
再次使用 crsctl status res -t 命令查询集群状态,显示数据库实例处于“Open”状态。此时用户应当可以正常连接。

Oracle Stuck Archiver 4.png

如何预防这种情况再次发生呢?

  • 定期检查归档日志空间,在归档日志空间即将写满时,手动删除较早的归档日志。
  • 为 FRA 卷组划分更大的存储空间。之前由于 EMC 存储上的空间不足,为 FRA 卷分配了较小的空间。FRA 卷组的空间扩大之后,还应修改服务器参数 db_recovery_file_dest_size 以允许数据库服务器使用新分配的空间。
zyxwvu
UNDER CONSTRUCTION