Oracle RAC 日常管理+排错命令大全

Oracle RAC 日常管理+排错命令大全

区分两类命令:

  1. GI集群层:grid 用户,crsctl / srvctl / oifcfg / olsnodes
  2. 数据库层 :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)实例启动失败

  1. 看数据库alert日志

  2. 检查ASM磁盘组是否挂载 asmcmd lsdg

  3. 检查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高频报错快速定位

  1. ORA‑29701:实例无法连接CSS集群,GI异常,检查CRS、CSSD进程
  2. GC Buffer Busy:RAC多节点热块冲突,业务调优
  3. 节点Evict驱逐:优先看GI alert日志,检查私网、voting磁盘IO
  4. 实例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。
相关推荐
镜舟科技1 小时前
从 DBA 经验到 Agent:镜舟如何构建生产级智能排障体系
数据库·agent·dba·skill·devops agent·mirrorship
瀚高PG实验室1 小时前
HAC 集群主节点状态在starting、running之间频繁切换
运维·数据库·postgresql·瀚高数据库
其实防守也摸鱼1 小时前
教育信息技术应用创新---基础软件信息赛
运维·服务器·数据库·github·copilot
GG-_-Bond1 小时前
9.1-kv存储持久化的设计
数据库
Gauss松鼠会1 小时前
【GaussDB】GaussDB 组件、节点和AZ故障仲裁与切换流程
运维·服务器·数据库·gaussdb
myy-learn2 小时前
32 SQLITE数据库
jvm·数据库·sqlite
JavaPub-rodert2 小时前
Redis 和 MySQL 如何保证数据一致性?从业务方案到底层原理完整讲解
数据库·redis·mysql
大牧师2 小时前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
IvorySQL2 小时前
PostgreSQL 日报| PGQ 功能发现严重缺陷(9 月 4 日)
数据库·postgresql