rac常用命令是Oracle Real Application Clusters(RAC)环境中管理和维护集群数据库的核心工具,通过命令行操作可以高效监控、配置和故障排查,以下从集群状态、实例管理、资源监控、网络配置、存储管理及故障恢复六大场景详细介绍常用命令,并结合表格对比关键参数。

集群状态检查命令
集群状态是RAC运维的基础,需定期验证集群件(Clusterware)和数据库实例的运行状态。
- crsctl status cluster:查看集群整体状态,包括集群模式(高可用/负载均衡)、节点存活状态及集群件版本。
crsctl status cluster -all # 显示详细状态,包括各节点的crs、ons等进程
- olsnodes:列出集群中所有节点的名称,常用于多节点环境确认节点列表。
olsnodes -n # 显示节点编号与名称的对应关系
- srvctl status database:检查指定数据库的实例状态及监听状态,确认实例是否在各节点运行。
srvctl status database -d racdb -n node1,node2 # 查看数据库racdb在node1和node2上的实例状态
实例管理命令
实例的启动、关闭及状态管理是RAC日常操作的核心,需结合srvctl实现集群化管控。
- srvctl start/stop database:启动或关闭数据库的所有实例,支持指定节点或实例。
srvctl start database -d racdb # 启动racdb的所有实例 srvctl stop database -d racdb -o immediate # 立即关闭所有实例
- srvctl start/stop instance:针对单个实例进行操作,适用于故障节点恢复或维护操作。
srvctl start instance -d racdb -i racdb1 -n node1 # 在node1启动实例racdb1
- sqlplus:通过SQL*Plus连接实例,执行数据库级操作,需指定实例名(RAC环境需带实例名)。
sqlplus / as sysdba@racdb1 # 连接实例racdb1 ALTER SYSTEM SWITCH LOGFILE; # 切换日志(示例)
资源监控命令
RAC资源监控需关注集群资源(如VIP、SCAN、监听)及数据库性能指标。
- crsctl status resource:查看集群资源状态,包括VIP、SCAN Listener、ASM磁盘组等。
crsctl status resource -t # 以树形结构显示所有资源状态及依赖关系 crsctl status resource -n node1 -v # 查看node1上资源的详细状态
- lsnrctl:管理监听器状态,支持查看监听端口、注册的服务及连接数。
lsnrctl status LISTENER_SCAN1 # 查看SCAN监听器状态 lsnrctl services LISTENER # 查看监听器注册的数据库服务
- asmcmd:ASM命令行工具,用于管理磁盘组、文件及磁盘状态。
asmcmd lsdg # 列出所有磁盘组及其空间使用情况 asmcmd ls -l +DATA/racdb/datafile/ # 查看ASM目录下的数据文件
网络配置命令
RAC网络配置涉及VIP、SCAN(Single Client Access Name)及公共/私有网络,需确保网络高可用。

- crsctl status resource -w "TYPE=VIP"`:查看VIP资源状态,包括VIP是否在线及绑定节点。
crsctl status resource -w "TYPE=VIP" -p # 显示VIP资源的详细属性(如IP、节点绑定)
- srvctl config scan:查看SCAN配置信息,包括SCAN IP及SCAN监听器数量。
srvctl config scan -v # 显示SCAN的VIP、监听器及网络配置详情
- ifconfig:检查节点网络接口状态,确认VIP是否正确绑定到公共网卡。
ifconfig eth0:1 # 查看VIP对应的虚拟网卡状态(Linux示例)
存储管理命令
RAC存储依赖ASM或共享文件系统,需定期监控磁盘空间及ASM组件状态。
- asmcmd lsdsk:列出ASM磁盘及其状态(NORMAL、FAILED、OFFLINE等)。
asmcmd lsdsk -G DATA # 查看磁盘组DATA中的所有磁盘
- v$asm_disk:通过SQL视图查询ASM磁盘的详细信息,包括磁盘路径、状态及冗余组。
SELECT disk_number, name, path, state, header_status FROM v$asm_disk;
- srvctl config asm:查看ASM实例配置,包括磁盘组、监听器及启动参数。
srvctl config asm -n node1 # 查看node1上的ASM实例配置
故障恢复命令
RAC故障恢复需快速定位问题并恢复服务,常见场景包括实例故障、节点故障及ASM磁盘故障。
- crsctl start/stop has:启动或停止集群件(HAS),通常在节点重启后执行。
crsctl start has # 启动集群件(需root权限)
- crsctl debug log:开启或关闭集群件日志调试模式,用于故障排查。
crsctl debug log crs -l # 查看crs进程的调试日志
- srvctl recover database:恢复数据库实例,适用于实例意外关闭后的自动重启。
srvctl recover database -d racdb -n node1 # 在node1恢复数据库racdb的实例
关键命令参数对比表
| 命令类别 | 常用命令 | 核心参数/选项 | 作用说明 |
|---|---|---|---|
| 集群状态 | crsctl status cluster | -all(详细状态) | 查看集群整体运行状态 |
| 实例管理 | srvctl start database | -d(数据库名), -n(节点) | 启动数据库所有实例 |
| 资源监控 | crsctl status resource | -t(树形结构), -w(条件过滤) | 查看集群资源状态及依赖关系 |
| ASM存储 | asmcmd lsdg | -G(磁盘组名) | 列出ASM磁盘组空间使用情况 |
| 网络配置 | srvctl config scan | -v(详细配置) | 查看SCAN IP及监听器配置 |
相关问答FAQs
Q1:如何判断RAC集群中某个实例是否正常启动?
A:可通过以下步骤确认:
- 使用
srvctl status database -d <数据库名>查看实例状态,若显示“Instance <实例名> is running”,则实例已启动; - 通过
sqlplus / as sysdba@<实例名>连接实例,执行SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE确认实例状态为“OPEN”; - 检查集群资源状态:
crsctl status resource -w "TYPE=ora.<实例名>.db",确保资源状态为“ONLINE”。
Q2:RAC节点故障后,如何手动将VIP资源迁移到其他节点?
A:手动迁移VIP需通过以下步骤:

- 确认故障节点VIP状态:
crsctl status resource -w "TYPE=VIP && NODE=<故障节点名>",若状态为“OFFLINE”,则 proceed; - 在目标节点执行
srvctl start vip -n <目标节点名> -i <VIP名>(VIP名可通过crsctl status resource -w "TYPE=VIP"查询); - 验证VIP状态:
ifconfig <网卡名>:1确认VIP已绑定到目标节点,并通过crsctl status resource确认资源状态为“ONLINE”。
