Oracle RAC 日常管理+排错命令大全
区分两类命令:
- GI集群层:grid 用户,crsctl / srvctl / oifcfg / olsnodes
- 数据库层 :oracle 用户,sqlplus(gv$视图)、asmcmd
日志位置先记牢:
- GI日志:
$GI_HOME/log/$(hostname)/- ASM日志:
$ORACLE_BASE/diag/asm/+asm/+ASM*/trace/- DB告警日志:
$ORACLE_BASE/diag/rdbms/<dbname>/<inst>/trace/alert_*.log
一、集群整体状态(grid用户)
# 查看全部集群资源,最常用,快速看哪些OFFLINE
crsctl status resource -t
# 查看所有节点
olsnodes
olsnodes -n # 显示节点编号
olsnodes -i # 显示VIP
# 检查本地CRS堆栈
crsctl check crs
# 检查全部节点CRS堆栈
crsctl check cluster -all
# 查看网卡集群注册信息(私网/公网)
oifcfg getif
二、srvctl:管理数据库、实例、ASM、VIP、SCAN、监听
# RAC数据库配置/状态
srvctl config database -d DBRAC
srvctl status database -d DBRAC
# 单个实例启停状态
srvctl status instance -d DBRAC -i DBRAC1
srvctl start instance -d DBRAC -i DBRAC1
srvctl stop instance -d DBRAC -i DBRAC1
# 启停整个RAC库(全部实例)
srvctl stop database -d DBRAC
srvctl start database -d DBRAC
# ASM状态
srvctl status asm
srvctl config asm
# SCAN
srvctl status scan
srvctl config scan
# VIP
srvctl status vip -n node1
# 监听
srvctl status listener
srvctl config listener
# 数据库服务service(业务连接用)
srvctl status service -d DBRAC
srvctl start service -d DBRAC -s app_srv
srvctl stop service -d DBRAC -s app_srv
三、ASM运维(grid用户 asmcmd)
asmcmd lsdg # 查看磁盘组状态、剩余空间
asmcmd lsdsk # 查看asm磁盘设备
asmcmd ls +DATA # 浏览磁盘组文件
asmcmd lsof # 查看asm打开文件
# 监控rebalance重平衡进度(加盘后)
sqlplus / as sysasm
select inst_id,operation,state,power,sofar,est_minutes from gv$asm_operation;
四、SQLplus RAC排错核心视图 gv$(全集群视图,oracle用户 sqlplus / as sysdba)
gv$= 全部节点;v$= 仅当前登录实例
-- 查看所有RAC实例状态
select inst_id,instance_name,host_name,status,thread#,undo_tablespace from gv$instance;
-- 查看集群所有会话,找阻塞、活跃会话
select inst_id,sid,serial#,username,status,event from gv$session where status='ACTIVE';
-- RAC杀其他节点会话,必须带@inst_id
alter system kill session 'sid,serial#,@inst_id';
-- GC等待!RAC性能头号指标,缓存融合等待
select inst_id,event,count(*) from gv$system_event where event like 'gc%' group by inst_id,event order by count(*) desc;
-- 查看redo线程,每个实例对应一个thread#
select inst_id,thread#,status,group# from gv$thread;
-- 归档日志状态,各实例归档情况
select inst_id,thread#,sequence#,first_time,status from gv$archived_log order by thread#,sequence# desc;
-- 锁等待、阻塞会话
select inst_id,sid,serial#,blocking_session,event from gv$session where blocking_session is not null;
-- 数据文件、表空间全集群
select inst_id,file#,name,status from gv$datafile;
-- SGA PGA 参数各实例
select inst_id,name,value from gv$parameter where name in ('sga_target','pga_aggregate_target');
-- 回滚段undo状态
select inst_id,undo_tablespace,status from gv$undo_stat;
五、RAC故障排查常用工具
# 实时监控数据库
oratop -i 3
# AWR报告
# RAC全局AWR(多实例汇总)
@?/rdbms/admin/awrgdrpt.sql
# 单实例AWR
@?/rdbms/admin/awrrpt.sql
# ADDM
@?/rdbms/admin/addmrpt.sql
六、常见故障快速排查命令
1)资源异常,有OFFLINE资源
crsctl stat res -t | grep OFFLINE
看是DB实例、ASM、VIP、SCAN、监听哪一个异常。
2)实例启动失败
-
看数据库alert日志
-
检查ASM磁盘组是否挂载
asmcmd lsdg -
检查spfile是否在ASM上
show parameter spfile;
3)节点驱逐、节点重启(RAC最头疼故障)
节点evict驱逐:私网心跳、投票盘、IO超时导致节点被集群踢出
# GI告警日志查看evict、CSS心跳报错
tail -300 $GI_HOME/log/$(hostname)/alert*.log
# 查看CSS投票盘信息
crsctl query css votedisk
排查方向:私网网卡、网络抖动、磁盘IO慢、OCR/Voting磁盘访问超时。
4)OCR投票盘检查
ocrcheck
crsctl query css votedisk
5)日志快速抓取
# GI日志过滤ERROR
grep -i error $GI_HOME/log/$(hostname)/alert*.log
七、RAC高频报错快速定位
- ORA‑29701:实例无法连接CSS集群,GI异常,检查CRS、CSSD进程
- GC Buffer Busy:RAC多节点热块冲突,业务调优
- 节点Evict驱逐:优先看GI alert日志,检查私网、voting磁盘IO
- 实例mount失败:检查ASM磁盘组是否MOUNT,spfile是否可访问
八、巡检简易检查清单(命令组合)
crsctl stat res -t
olsnodes
srvctl status database -d DBRAC
asmcmd lsdg
sqlplus / as sysdba <<EOF
select inst_id,instance_name,status from gv\$instance;
select inst_id,thread#,status from gv\$thread;
EOF
重要提醒:
- 操作集群尽量优先使用
srvctl,不要直接sqlplus启停RAC实例,防止CRS资源状态不一致。- 不要直接操作系统层面kill GI相关进程,优先crsctl/srvctl。