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。
相关推荐
数据库小学妹10 小时前
国产数据库怎么选?兼容、迁移、核心案例与融合架构四道关
数据库·架构·国产数据库·数据库迁移·融合数据库
IvorySQL11 小时前
PostgreSQL 日报| PgBouncer 修复三个 CVE 漏洞(10 月 15 日)
数据库·postgresql·区块链
饺子大魔王的男人11 小时前
后台表格、查询、流程总在重复写?我用ToolJet把PostgreSQL直接做成可远程访问的业务系统
数据库·postgresql
Gauss松鼠会12 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
杨云龙UP12 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
AOI小白新手上路12 小时前
autodl常用的tar 打包下载(数据集)命令手册:逐段拆解与套用模板
java·大数据·数据库
凯歌的博客13 小时前
DuckDB 是一款进程内的分析型数据库
数据库·ai编程
dishugj13 小时前
Oracle物理体系结构
数据库·oracle
北亚数据恢复14 小时前
【数据库数据恢复】NDF文件变0KB、数据库损坏?超大数据库数据恢复案例
数据库·oracle