最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何处理Oracle RAC中因Archivelog满导致的整个集群挂起
时间:2026-06-24 09:05:57 编辑:袖梨 来源:一聚教程网
Oracle RAC因归档日志满导致集群挂起的本质是归档写入失败引发连锁反应:节点无法切换日志→LGWR阻塞→DML挂起→CRS状态更新停滞→最终节点驱逐或crsctl卡死;必须同步清理空间与修复归档路径可用性,单做RMAN删除往往无效。
oracle rac 因归档日志满导致集群挂起,本质不是“日志太多”,而是归档写入失败触发连锁反应:节点无法切换日志 → lgwr 阻塞 → 所有 dml 挂起 → crs 资源状态更新停滞 → 最终表现为节点驱逐、crsctl check crs 卡死或返回 crs-4638 但后续命令无响应。必须同步清理空间与修复归档路径可用性,单做 rman 删除往往无效。
确认归档目标是否真为共享路径
RAC 中常见误判:某个节点执行 ARCHIVE LOG LIST 显示 NO,就以为归档没启用,其实只是该节点本地路径已满,而共享归档目录(如 +FRA 或 NFS 挂载点)早已写满。关键动作是查真实归档位置:
- 在每个节点执行:
SHOW PARAMETER log_archive_dest_1,确认LOCATION值是否指向 ASM 磁盘组(如+FRA)或共享文件系统路径 - 若用 ASM,用
asmcmd lsdg查对应磁盘组使用率;若用文件系统,用df -h查挂载点,而非只看单个节点的/u01/arch - 检查所有节点的
log_archive_dest_state_1是否均为ENABLE:运行SELECT INST_ID, VALUE FROM GV$PARAMETER WHERE NAME = 'log_archive_dest_state_1',避免某节点静默停归档
RMAN 清理必须按节点+实例连接,不能跨节点通杀
RAC 下 RMAN 默认不感知集群锁机制,用 target / 连接远程 TNS 别名时,可能并发删同一份归档,触发 ORA-19606 或静默跳过。正确做法是:
- 在每个数据库节点,先设置
ORACLE_SID为本节点实例名(如orcl1),再执行:rman target / - 避免用
DELETE ARCHIVELOG ALL—— 改用时间范围限定:DELETE NOPROMPT FORCE ARCHIVELOG FROM TIME 'SYSDATE-7' COMPLETED BEFORE 'SYSDATE-1' - 如果归档在 ASM 中且
LIST ARCHIVELOG ALL卡住,缩小扫描范围:LIST ARCHIVELOG FROM TIME 'SYSDATE-5' - 备库上必须加
FORCE参数,否则 MRP 正在读的归档会被跳过:DELETE NOPROMPT FORCE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2'
手动清理 RMAN 看不见的历史残留文件
RMAN 只能删控制文件里还保留元数据的归档(默认保留约 7 天,由 control_file_record_keep_time 控制)。那些“三年前的 *.dbf”RMAN 根本不认,但它们占着 90% 的空间。这步不能跳过:
- 先进归档目录(如
/u01/fast_recovery_area/DBNAME/archivelog或asmcmd进入对应 ASM 别名路径) - 预览再删:
find . -name "*.dbf" -mtime +15 -ls,确认全是超期且不在当前备份集里的文件 - 执行删除:
find . -name "*.dbf" -mtime +15 -delete(注意:别漏掉-delete,-ls只是预览) - 删完立刻回 RMAN 执行:
CROSSCHECK ARCHIVELOG ALL,否则V$ARCHIVED_LOG会残留脏状态,DG 备库可能卡在WAIT_FOR_GAP
清理后必须验证归档可写,否则挂起会复发
空间释放 ≠ 归档恢复。常见遗漏点:
- 在每个节点执行:
ALTER SYSTEM ARCHIVE LOG CURRENT,观察alert.log是否出现新归档记录(如ARC0: Archiving not possible. Archive destination LOG_ARCHIVE_DEST_1 is full) - 查
V$FLASH_RECOVERY_AREA_USAGE,确认ARCHIVED LOG的PERCENT_SPACE_USED已回落至 80% 以下;若仍高,说明 FRA 配额(db_recovery_file_dest_size)本身设得太小,需ALTER SYSTEM SET db_recovery_file_dest_size=xxG - RAC 环境下,哪怕只在一个节点上改了参数,也要确认所有节点的
GV$PARAMETER同步生效,尤其 DG 场景中主库归档传输状态(log_archive_dest_state_2)是否为ENABLE
最易被忽略的是:手工删完物理文件后忘记 CROSSCHECK,导致控制文件里残留“已删但未标记”的记录,下次归档切换时仍报 ORA-00257 —— 表面空间够了,实际归档通道依然堵死。
相关文章
- 逆战未来氪金严重吗 逆战未来充值花费与性价比分析 06-25
- Steam账号购买流程详解 安全购买与注意事项全指南 06-25
- 第五人格账号买卖平台推荐 安全靠谱的交易渠道汇总 06-25
- 丁墨小说全集在线阅读 - 2026热门言情推理作品 06-25
- 电商价格战背后的逻辑与影响 - 2026年深度解析 06-25
- 黑色星期五对跨境电商的影响分析 - 2026年最新趋势解读 06-25