\_drc[SID].log 文件真实路径为 $ORACLE\_BASE/diag/rdbms/[db\_unique\_name]/[instance\_name]/trace/\_drc[SID].log,如 /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/\_drco1.log。
如何定位 _drc[SID].log 文件的真实路径
broker 日志不是归档日志,也不归 adrci 管理,它硬编码写在诊断目录下的 trace/ 子目录里。别去 $oracle_home/rdbms/log/ 翻——那是老版本(10g/11g)的路径,19c 已废弃。
正确路径是:$ORACLE_BASE/diag/rdbms/[db_unique_name]/[instance_name]/trace/_drc[SID].log。比如主库 DB_UNIQUE_NAME=orcl、实例名 orcl1,那文件就是:/u01/app/oracle/diag/rdbms/orcl/orcl1/trace/_drco1.log。
- 用
ls -lh $ORACLE_BASE/diag/rdbms/*/trace/_drc*.log一键扫全实例 - 如果返回空,说明
DG_BROKER_START=FALSE,Broker 根本没开,_drc*.log不会生成 - 注意:文件名中的
[SID]是实例名(如orcl1),不是数据库名或服务名
怎样判断 _drc[SID].log 是否还在正常写入
Broker 日志一旦停更,大概率是 DMON 进程挂了。别急着查命令失败,先确认进程活着:
- 执行
ps -ef | grep dmon,看有没有ora_dmon_[SID]进程 - 若无,手动启动:
srvctl start database -d [db_unique_name] -o mount(确保 DB 在 MOUNT 状态下再启 Broker) - 启动后等 30 秒,再
tail -f _drc[SID].log—— 应该立刻刷出类似Connecting to database...的连接日志 - 如果仍不更新,检查
ORACLE_HOME和ORACLE_SID环境变量是否与实例匹配(常见于 RAC 多实例环境配错 SID)
从 _drc[SID].log 中快速抓取切换失败的关键线索
_drc[SID].log 里真正有用的不是“Command not complete”这种废话,而是 ERROR 行后面紧跟着的 SQL 和时间戳。尤其当 SWITCHOVER 卡住时:
- 搜最近 5 分钟的错误:
grep -A 3 -B 1 "$(date -d '5 minutes ago' '+%b %d %H:%M')" _drc[SID].log | grep -E "(ERROR|ORA-)" - 重点看 ERROR 行之后第一行含
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE或START APPLY的语句 —— 这才是 Broker 尝试执行但失败的底层操作 - 常见陷阱:日志里反复出现
Waiting for message from database,这不是 Broker 的问题,而是备库MRP0进程没跑起来,得立刻切过去查SELECT PROCESS, STATUS FROM v$managed_standby; - ORA-16766 这类错误,通常源于备库未启用应用(
RECOVERY_MODE = IDLE),而不是 Broker 配置本身
清理过大的 _drc[SID].log 文件时最常踩的坑
这个文件不轮转,超 200MB 就该干预;超 1GB 基本说明有持续异常,不能只清日志。
- 绝对不要
rm _drc[SID].log—— DMON 进程还拿着文件句柄,磁盘空间不释放,且重启后新日志仍往旧 inode 写 - 正确做法是清空内容:
cat /dev/null > _drc[SID].log(保留文件、保留句柄、释放空间) - 清完立刻
tail -f _drc[SID].log确认是否继续追加;如果不写,回退上一步检查 DMON 进程 - 如果日志每小时涨几百 MB,别清了,直接查原因:是不是频繁执行
EDIT DATABASE ... SET STATE?或者网络抖动导致 Broker 反复重试连接?
Broker 日志本身不记录“谁在什么时候发了什么命令”,它只记“Broker 尝试做了什么以及为什么失败”。想还原操作人和时间,必须交叉比对 alert_[SID].log 里的 Switchover to primary completed 时间戳和 _drc[SID].log 里对应时间段的 ERROR 行 —— 这个对齐动作,没人替你做。











