v$archive_processes是归档进程实时监控视图,用于诊断arcn卡住问题:查status是否长期active/error、consumed_bytes与bytes_processed差值过大、多进程同dest_id争用,结合v$archived_log定位积压日志及归档目标io性能。

归档进程(ARCn)卡住或响应慢,直接表现为 log file switch (archiving needed) 等待事件飙升、DML 操作大面积阻塞,甚至数据库挂起。这不是配置没开的问题,而是归档系统内部已出现资源争用或 I/O 堵塞,必须从进程级实时状态切入诊断。
查 V$ARCHIVE_PROCESSES 看进程是否“活着但不动”
这个视图是归档进程的实时快照,不是历史汇总。重点不是看“有多少个 ARCn”,而是看每个进程当前在做什么、卡在哪一步:
-
STATUS字段为WAITING是正常;若长期停留在ACTIVE或ERROR,说明它正在处理一个归档任务却迟迟无法完成 -
PROCESS列显示进程编号(如ARC0),结合PID可在操作系统层用ps -p <pid> -o pid,ppid,comm,etime</pid>查其存活时间和父进程 -
CONSUMED_BYTES和BYTES_PROCESSED差值过大(比如相差数 GB),说明该进程读取了日志但写入归档目标严重滞后 - 多个进程
STATUS = ACTIVE且DEST_ID相同,大概率是归档目标存储响应慢,而非进程不够
结合 V$ARCHIVED_LOG 找“积压点”在哪
归档延迟不是均匀发生的,通常集中在某几个日志序列号上。用这个视图定位具体哪几组日志拖慢了整体节奏:
- 按
FIRST_TIME和NEXT_TIME排序,找NEXT_TIME - FIRST_TIME明显大于其他记录的行(比如超过 5 分钟),这些就是归档耗时异常的“问题日志” - 检查对应
DEST_ID的DESTINATION,确认是不是指向了性能差的存储路径(如 NFS、低速 SATA 盘、共享 ASM 磁盘组) - 若
DELETED = 'NO'且ARCHIVED = 'NO',说明归档根本没成功,需立刻查ALERT.LOG中是否有ORA-19502或ORA-16014错误
确认归档目标是否真的可写、够快
ARCn 进程本身不报错,不代表归档能顺利完成。很多问题出在目标路径的底层能力上:
- 用
dd if=/dev/zero of=/path/to/arch_dest/testfile bs=1M count=1024 oflag=direct测目标路径的顺序写吞吐,低于 80MB/s 就属于高风险(尤其对 NVMe/SSD 而言) - 检查文件系统是否启用了 noatime、dirsync 等影响写入性能的挂载选项;ASM 磁盘组是否设置了过小的
AU_SIZE(au_size=1M会导致归档大文件频繁元数据更新) - 如果归档路径在 FRA(
db_recovery_file_dest),务必核对db_recovery_file_dest_size是否被逻辑打满——物理磁盘有空闲但 FRA 已到上限,ARCn 会静默失败 - 远程归档(
LOG_ARCHIVE_DEST_2)要单独测网络带宽和延迟,tnsping正常不等于归档传输稳定
别只盯着 LOG_ARCHIVE_MAX_PROCESSES
盲目增加归档进程数量(比如从默认 4 改成 16)往往无效,甚至加重竞争。真正需要关注的是:
- 当前活跃 ARCn 进程是否都分配到了不同 CPU 核心(用
top -Hp <pid></pid>观察线程绑定) - 是否存在多个 ARCn 同时尝试写同一个归档目标目录(尤其是非 ASM 文件系统),导致 inode 锁争用
-
ARCHIVE_LAG_TARGET设置过小(如 30 秒)会强制频繁切换日志,放大归档压力,而非缓解它 - RAC 环境下,确认
LOG_ARCHIVE_CONFIG中的dg_config是否包含所有实例名,否则跨实例归档可能失败而不报明显错误
归档性能问题的根因几乎总在 IO 路径上:要么是存储响应慢,要么是路径配置不合理,要么是 FRA 逻辑限制太死。进程状态只是表象,V$ARCHIVE_PROCESSES 提供的是线索,不是答案。真正动手前,先确认那条归档写入路径在操作系统层面是否真的“通”且“快”。











