Oracle归档进程卡死有效排查方法

 更新时间:2026年10月30日 08:53:00   作者:晴天¥  
遇到Oracle RAC集群数据库实例状态变为INTERMEDIATE并提示StuckArchiver,本文详细分析归档进程卡住的原因,包括ASM磁盘组空间不足和归档路径配置错误,并提供从快速诊断到应急处理的完整步骤,需要的朋友可以参考下

问题复现:

[grid@host03 ~]$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.chad
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.helper
               OFFLINE OFFLINE      host03                   IDLE,STABLE
               OFFLINE OFFLINE      host04                   STABLE
ora.net1.network
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.ons
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.proxy_advm
               OFFLINE OFFLINE      host03                   STABLE
               OFFLINE OFFLINE      host04                   STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.ASMNET2LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.DGDATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.DGMGMT.dg(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       host03                   STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       host04                   STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       host04                   STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       host03                   169.254.0.152 172.27
                                                             .1.100 172.27.2.100,
                                                             STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   Started,STABLE
      2        ONLINE  ONLINE       host04                   Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.asmnet2.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.cvu
      1        ONLINE  ONLINE       host04                   STABLE
ora.gns
      1        ONLINE  ONLINE       host04                   STABLE
ora.gns.vip
      1        ONLINE  ONLINE       host04                   STABLE
ora.host03.vip
      1        ONLINE  ONLINE       host03                   STABLE
ora.host04.vip
      1        ONLINE  ONLINE       host04                   STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       host03                   Open,STABLE
ora.orcl.db
      1        ONLINE  INTERMEDIATE host04                   Stuck Archiver,HOME=
                                                             /u01/app/oracle/prod
                                                             uct/19.3.0/dbhome_1,
                                                             STABLE
      2        ONLINE  INTERMEDIATE host03                   Stuck Archiver,HOME=
                                                             /u01/app/oracle/prod
                                                             uct/19.3.0/dbhome_1,
                                                             STABLE
ora.qosmserver
      1        ONLINE  ONLINE       host04                   STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       host03                   STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       host04                   STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       host04                   STABLE
--------------------------------------------------------------------------------
[grid@host03 ~]$ 

核心问题很明确:ora.orcl.db 的两个实例(host03、host04)状态均为 INTERMEDIATE,且详细描述为 Stuck Archiver。这表示归档进程(ARCn)无法将联机重做日志写出,导致日志切换阻塞,进而使数据库实例处于挂起或半挂起状态。

一、快速判断与根本原因

Stuck Archiver的直接诱因通常是归档目标空间耗尽或归档路径不可写。在 RAC 环境中,单个节点归档失败就可能拖累整个集群,因为 LGWR 进程必须等待归档完成才能复用重做日志。

结合实际的环境,排查应优先聚焦在归档空间上。请按顺序执行以下只读检查,快速定位是“真满了”还是“逻辑配额满了”。

第一步:检查 ASM 磁盘组剩余空间(如果是 ASM 归档)

如果归档路径指向 ASM,必须用 asmcmd lsdg 确认底层磁盘组是否还有真实可用空间。注意:db_recovery_file_dest_size调大并不代表 ASM 磁盘组有空间,底层满了照样报错。

就像1.2章节,即使逻辑空间上限是充足的。但底层空间将满,归档依然不能写入到磁盘中,导致归档进程异常。

其实上图就已经能基本判断为归档空间饱满所致。

第二步:检查归档目标状态与错误信息

以 oracle 用户登录任一实例,查询归档目标状态。ERROR 列通常会直接给出线索(如空间不足、权限问题)。

set lines 400;
column destination format a50;
SELECT DEST_ID, STATUS, DESTINATION, ERROR FROM V$ARCHIVE_DEST_STATUS WHERE STATUS != 'INACTIVE';

附加问题:归档路径配置错误。ora.orcl.db 的归档目标指向了本地文件系统路径 /u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch,而非 RAC 环境必需的共享存储(ASM)。该路径无法被 oracle 用户写入,导致 ORA-19504: failed to create file "",进而使 ARCn 进程卡住。

假如我们把先把目录创建并修改目录权限,看是否能通过修改进行解决

可以看到并不能解决,因为数据库的 LOG_ARCHIIVE_DEST_1 参数没有更新,或者参数更新了但 RAC 的另一节点未同步生效,ARCn 进程仍然会因为无法写入(或路径配置未真正生效)而卡住。

强制切换日志也失败!!!继续下边的排查!

这里有点奇怪,暂时不知道什么原因!!!也许是之前的双节点配置不一致,一个显示配置路径,一个使用闪回区的位置。也许吧!!!

第三步:检查 FRA(快速恢复区)与 ASM 磁盘组

Stuck Archivelog最常见的原因是归档空间满,前面已经基本证实。下边我们需同时检查 Oracle 内部限额和底层存储的真实剩余空间。

如果归档在 FRA闪回区(文件系统):查 v$recovery_file_dest,看 space_used是否逼近 space_limit,且 space_reclaimable 为 0 或极低。

SELECT NAME, SPACE_LIMIT/1073741824 AS LIMIT_GB, SPACE_USED/1073741824 AS USED_GB, SPACE_RECLAIMABLE/1073741824 AS RECLAIM_GB FROM V$RECOVERY_FILE_DEST;

可以看到FRA 配置为 +DGDATA,限额 16GB,已用约 3GB,可回收约 0.05GB。这样看起来感觉感觉空间还蛮多,但是还需结合下面来进行判断。

我们环境中归档存放在 ASM 磁盘组(环境中有 DGDATA、DGMGMT,归档很可能也在 ASM):以 grid 用户执行 asmcmd lsdg,查看对应归档磁盘组(如 +ARCH 或 +DATA 中的归档目录)的 Free_MB。若 Free_MB 极小或为 0,即为存储层写满。

asmcmd lsdg 输出揭示了一个关键且危险的新情况:DGDATA 磁盘组的 Usable_file_MB 为 -1604。

这意味着,虽然 DGDATA 还有 888MB 的物理剩余空间(Free_MB),但这个空间不足以在磁盘故障后安全地恢复冗余。对于 NORMAL 冗余的磁盘组,Usable_file_MB 为负值表示磁盘组已经处于“不安全”状态,任何一块磁盘的故障都可能导致数据丢失或冗余降级。

第四步:确认归档进程状态

查看 v$ARCHIVE_PROCESSES,正常情况下 STATE 应为 IDLE 或 BUSY。若状态异常,说明 ARCn 进程本身有问题。

命令:SELECT PROCESS, STATUS, STATE, LOG_SEQUENCE FROM V$ARCHIVE_PROCESSES;

第五步:检查数据库运行日志(最有力的证据)

有力的证据就是结合看数据库的运行日志,数据库告警日志(Alert Log)。从 Oracle 11g 开始,日志统一由 ADR(自动诊断库)管理,路径有规律可循,但最准确的方式是直接查数据库。

通用路径规律:

$ORACLE_BASE/diag/rdbms/<db_name>/<SID>/trace/alert_<SID>.log

 查询语句:SELECT value FROM v$diag_info WHERE name = 'Diag Trace';

日志目录(我当前的测试环境):/u01/app/oracle/diag/rdbms/orcl/orcl1/trace

二、应急处理与恢复

在确认是空间问题后,首要任务是释放空间让归档恢复,实例才能从 INTERMEDIATE 回到ONLINE。这里我们由于是测试环境,我们之前有专门讲过如何添加ASM磁盘组成员来扩容磁盘组来进行容量问题。

2.1.清理过期归档

使用 RMAN 删除旧归档。注意在 RAC 中,建议在每个节点分别连接本地实例执行,避免并发冲突。

# 在 host03 上
export ORACLE_SID=orcl1
rman target /
RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';

2.2.验证恢复

检查归档进程状态:

下图是我已经清理归档之后的状态:

空间释放后,手动切换日志并观察 alert log,看归档是否成功。

ALTER SYSTEM ARCHIVE LOG CURRENT;

随后再次执行 crsctl status resource -t,观察 ora.orcl.db 的 STATE 是否变为 ONLINE,Stuck Archiver描述是否消失。

[grid@host03 ~]$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.chad
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.helper
               OFFLINE OFFLINE      host03                   IDLE,STABLE
               OFFLINE OFFLINE      host04                   STABLE
ora.net1.network
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.ons
               ONLINE  ONLINE       host03                   STABLE
               ONLINE  ONLINE       host04                   STABLE
ora.proxy_advm
               OFFLINE OFFLINE      host03                   STABLE
               OFFLINE OFFLINE      host04                   STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.ASMNET2LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.DGDATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.DGMGMT.dg(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       host03                   STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       host04                   STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       host04                   STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       host03                   169.254.0.152 172.27
                                                             .1.100 172.27.2.100,
                                                             STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   Started,STABLE
      2        ONLINE  ONLINE       host04                   Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.asmnet2.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       host03                   STABLE
      2        ONLINE  ONLINE       host04                   STABLE
ora.cvu
      1        ONLINE  ONLINE       host04                   STABLE
ora.gns
      1        ONLINE  ONLINE       host04                   STABLE
ora.gns.vip
      1        ONLINE  ONLINE       host04                   STABLE
ora.host03.vip
      1        ONLINE  ONLINE       host03                   STABLE
ora.host04.vip
      1        ONLINE  ONLINE       host04                   STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       host03                   Open,STABLE
ora.orcl.db
      1        ONLINE  ONLINE       host04                   Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       host03                   Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       host04                   STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       host03                   STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       host04                   STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       host04                   STABLE
--------------------------------------------------------------------------------
[grid@host03 ~]$ 

以上就是Oracle归档进程卡死有效排查方法的详细内容,更多关于Oracle归档进程卡死排查的资料请关注脚本之家其它相关文章!

相关文章

  • Oracle设置时区和系统时间的多种实现方法

    Oracle设置时区和系统时间的多种实现方法

    在Oracle数据库中,设置时区和系统时间可以通过多种方法实现,本文通过代码示例给大家介绍了Oracle设置时区和系统时间的多种实现方法,需要的朋友可以参考下
    2024-02-02
  • Oracle约束管理脚本

    Oracle约束管理脚本

    Oracle约束管理脚本...
    2007-03-03
  • Oracle的directory详细路径查看、创建及修改方法

    Oracle的directory详细路径查看、创建及修改方法

    directory对象所定义的路径可以在EM中的“管理”-“方案”-“目录对象”进行查看、创建或修改,这篇文章主要介绍了Oracle的directory详细路径查看、创建及修改,需要的朋友可以参考下
    2024-03-03
  • Oracle中行列转换有哪些方法

    Oracle中行列转换有哪些方法

    这篇文章主要给大家介绍了关于Oracle中行列转换有哪些方法的相关资料,最近在工作中遇到了涉及到数据库行列之间相互转换的问题,所以这里给大家总结介绍下,需要的朋友可以参考下
    2023-08-08
  • 一个oracle指令的好网站

    一个oracle指令的好网站

    一个oracle指令的好网站...
    2007-03-03
  • Oracle 用户名大小写控制的实现示例

    Oracle 用户名大小写控制的实现示例

    Oracle用户名默认自动转换为大写,双引号可保留原始大小写,本文主要介绍了Oracle 用户名大小写控制的实现示例,感兴趣的可以了解一下
    2025-06-06
  • oracle查看执行最慢与查询次数最多的sql语句

    oracle查看执行最慢与查询次数最多的sql语句

    这篇文章主要给大家介绍了oracle查看执行最慢与查询次数最多的sql语句,文中给出完整的示例代码,相信对大家的学习或者工作具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-01-01
  • Oracle常见报错问题及解决方案超全整理(运维/开发实战总结)

    Oracle常见报错问题及解决方案超全整理(运维/开发实战总结)

    Oracle数据库是企业级应用程序的关键组成部分,但它可能会面临各种BUG和故障,这篇文章主要介绍了Oracle常见报错问题及解决方案超全整理的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-10-10
  • oracle索引介绍(图文详解)

    oracle索引介绍(图文详解)

    在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容
    2014-06-06
  • 解决报错ora-32035的方法分析

    解决报错ora-32035的方法分析

    本篇文章是对解决报错ora-32035的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论