ADRCI在RAC中必须逐节点识别ADR Home,因各节点路径独立且不自动跨节点汇总;需分别执行show home确认,再用set homepath指定多个Home实现批量操作,但ips pack和purge等命令仍须单节点执行。
ADRCI在RAC中必须先识别所有节点的ADR Home
oracle rac不是单实例,每个节点都有独立的diag/rdbms/<db_name>/<instance_name>目录。adrci默认只显示当前节点的adr home,但show home命令不会自动跨节点汇总——它只列出本机$adr_base下可见的目录。如果某个节点未启动或其diagnostic_dest路径未被当前shell识别(比如未设置oracle_home或oracle_sid),该节点的adr home就不会出现在列表里。
实操建议:
- 在每个RAC节点上分别执行
adrci→show home,确认每个实例对应的ADR Home路径完整存在(如diag/rdbms/orcl/orcl1、diag/rdbms/orcl/orcl2) - 不要依赖“一次登录、全局查看”——ADRCI本身不提供集群级发现机制,也无法通过网络访问远端节点的ADR文件系统
- 若使用脚本批量操作,需配合
ssh或crsctl stat res -t先确认哪些实例在线,再逐节点执行
用set homepath同时指定多个节点的ADR Home才能批量操作
set homepath支持传入多个ADR Home路径,这是RAC场景下避免重复切换的关键。但注意:不是所有ADRCI命令都支持多Home上下文——比如show alert可以,而ips pack incident会报错“only one home allowed”。
常见错误现象:show alert -tail 50返回空或仅显示一个节点日志,往往是因为只设置了单个Home,或未显式指定homepath。
实操建议:
- 进入ADRCI后,用
set homepath diag/rdbms/orcl/orcl1 diag/rdbms/orcl/orcl2一次性设置两个节点 - 验证是否生效:
show home应显示两行已选中的路径(非“Available Homes”列表) - 执行
show alert -tail 50时,ADRCI会按Home顺序依次输出,每段日志前带ADR Home = ...标识 - 若需过滤特定错误,用
show alert -p "message_text like '%ORA-00600%'",它会在所有已设Home中并行搜索
打包RAC故障信息必须分节点生成IPS包
ips pack命令不支持跨节点打包。试图在多Home上下文中运行ips pack problem会失败,并提示“Cannot pack multiple homes in one operation”。这是因为每个节点的事件ID、问题ID是独立分配的,且转储文件物理隔离。
性能影响:强行在单节点上打包远端节点的诊断数据(比如scp拉取后再本地处理)不仅慢,还可能因时间戳错乱导致ips verify失败。
实操建议:
- 对每个节点单独执行:
set homepath diag/rdbms/orcl/orcl1→ips pack problem - 生成的ZIP包名默认含实例名和时间戳(如
problem_12345_orcl1_20260610.zip),便于区分 - 若要合并提交Support,手动将多个ZIP包放入同一目录压缩,但务必在README.txt中注明各包对应节点及发生时间
- 避免用
ips pack incident -all——它只打包当前Home下的所有事件,极易遗漏其他节点的关键事件
RAC中清理诊断数据需严格按节点执行
purge命令同样不跨节点。误以为set homepath后purge -age 7会清理所有节点,结果只清了第一个Home。更危险的是:若某节点ADR Home路径拼写错误(比如orcl2写成orcl_2),purge会静默跳过,不报错也不提示。
容易踩的坑:在共享ASM磁盘组上,cdump或incident目录可能被多个实例挂载到不同路径,但ADRCI只认DIAGNOSTIC_DEST定义的逻辑路径,不校验底层存储是否共享。
实操建议:
- 清理前必做:
show homes确认目标Home存在,再set homepath <one_home>单次清理一个节点 - 用
show incident -mode detail -p "creation_time > '2026-06-03 00:00:00'"先查出待清理事件,避免误删 - 生产环境建议加
-dryrun参数(Oracle 19c+支持)预览将删除哪些文件 - 不要用
rm -rf直接删$ADR_BASE子目录——ADRCI元数据可能残留,后续show命令异常


















