**Oracle RAC 常用命令清单**,按核心管理对象划分,包含命令作用、示例及执行用户,便于快速查阅:


### 一、集群基础管理(`grid` 用户)
| 命令 | 作用 | 示例 |
|------|------|------|
| `crsctl check cluster -all` | 检查所有节点集群健康状态 | `crsctl check cluster -all` |
| `crsctl status resource -t` | 树形展示所有集群资源状态(数据库、监听、VIP等) | `crsctl status resource -t` |
| `crsctl start cluster -all` | 启动所有节点的集群服务 | `crsctl start cluster -all` |
| `crsctl stop cluster -all` | 停止所有节点的集群服务 | `crsctl stop cluster -all` |
| `olsnodes` | 查看集群所有节点名称 | `olsnodes` |
| `crsctl status nodeapps -n <节点名>` | 查看指定节点的VIP、GSD等应用资源 | `crsctl status nodeapps -n p19c01` |


### 二、数据库管理(`oracle` 用户)
| 命令 | 作用 | 示例 |
|------|------|------|
| `srvctl start database -d <库名>` | 启动整个数据库(所有实例,默认OPEN模式) | `srvctl start database -d p19c0` |
| `srvctl stop database -d <库名>` | 停止整个数据库(所有实例) | `srvctl stop database -d p19c0`(加 `-f` 强制停止) |
| `srvctl status database -d <库名>` | 查看数据库整体状态(所有实例是否在线) | `srvctl status database -d p19c0` |
| `srvctl config database -d <库名>` | 查看数据库配置(实例、路径、版本等) | `srvctl config database -d p19c0` |
| `sqlplus / as sysdba` | 以DBA身份登录数据库 | 登录后可执行SQL(如 `select status from v$instance;`) |


### 三、实例管理(`oracle` 用户)
| 命令 | 作用 | 示例 |
|------|------|------|
| `srvctl start instance -d <库名> -i <实例名>` | 启动指定实例(默认OPEN模式) | `srvctl start instance -d p19c0 -i p19c01` |
| `srvctl start instance -d <库名> -i <实例名> -o mount` | 启动实例到MOUNT模式 | `srvctl start instance -d p19c0 -i p19c01 -o mount` |
| `srvctl stop instance -d <库名> -i <实例名>` | 停止指定实例 | `srvctl stop instance -d p19c0 -i p19c01` |
| `srvctl status instance -d <库名> -i <实例名>` | 查看指定实例状态 | `srvctl status instance -d p19c0 -i p19c01` |


### 四、服务(Service)管理(`oracle` 用户)
| 命令 | 作用 | 示例 |
|------|------|------|
| `srvctl start service -d <库名> -s <服务名>` | 启动指定服务 | `srvctl start service -d p19c0 -s app_svc` |
| `srvctl stop service -d <库名> -s <服务名>` | 停止指定服务 | `srvctl stop service -d p19c0 -s app_svc` |
| `srvctl status service -d <库名>` | 查看数据库所有服务状态 | `srvctl status service -d p19c0` |
| `srvctl config service -d <库名>` | 查看服务配置(关联实例、负载策略等) | `srvctl config service -d p19c0` |
| `srvctl add service -d <库名> -s <服务名> -r <优先实例> -a <备用实例>` | 创建服务(指定主备实例,支持故障转移) | `srvctl add service -d p19c0 -s app_svc -r p19c01 -a p19c02` |


### 五、监听管理
| 监听类型 | 命令 | 作用 | 示例 | 执行用户 |
|----------|------|------|------|----------|
| 本地监听(LISTENER) | `srvctl start listener -l LISTENER` | 启动本地监听 | `srvctl start listener -l LISTENER` | `oracle` |
| 本地监听 | `srvctl stop listener -l LISTENER` | 停止本地监听 | `srvctl stop listener -l LISTENER` | `oracle` |
| 本地监听 | `lsnrctl status LISTENER` | 查看监听状态及注册服务 | `lsnrctl status LISTENER` | `oracle` |
| SCAN监听 | `srvctl start scan_listener` | 启动所有SCAN监听 | `srvctl start scan_listener` | `grid` |
| SCAN监听 | `srvctl stop scan_listener` | 停止所有SCAN监听 | `srvctl stop scan_listener` | `grid` |
| SCAN监听 | `lsnrctl status LISTENER_SCAN1` | 查看指定SCAN监听状态 | `lsnrctl status LISTENER_SCAN1` | `grid` |


### 六、ASM存储管理(`grid` 用户)
| 命令 | 作用 | 示例 |
|------|------|------|
| `srvctl start asm -n <节点名>` | 启动指定节点的ASM实例 | `srvctl start asm -n p19c01` |
| `srvctl stop asm -n <节点名>` | 停止指定节点的ASM实例 | `srvctl stop asm -n p19c01` |
| `srvctl status asm -n <节点名>` | 查看ASM实例状态 | `srvctl status asm -n p19c01` |
| `asmcmd lsdg` | 查看所有ASM磁盘组状态(空间、冗余等) | `asmcmd lsdg` |
| `asmcmd lsattr -l -G <磁盘组名>` | 查看磁盘组属性 | `asmcmd lsattr -l -G DATA` |


### 七、故障排查常用命令
| 命令 | 作用 | 执行用户 |
|------|------|----------|
| `crsctl stat res -t -init` | 查看集群初始化资源状态(如ohasd、cssd) | `grid` |
| `tail -f $GRID_HOME/log/<节点名>/alert<节点名>.log` | 查看集群告警日志 | `grid` |
| `tail -f $ORACLE_HOME/log/<节点名>/alert_<实例名>.log` | 查看数据库实例告警日志 | `oracle` |
| `srvctl relocate service -d <库名> -s <服务名> -i <原实例> -t <目标实例>` | 手动迁移服务到其他实例 | `oracle` |


### 说明:
1. **用户区分**:`grid` 负责集群基础设施(ASM、SCAN监听等),`oracle` 负责数据库层(实例、服务等)。
2. **环境变量**:执行前需确保环境变量正确(`grid` 加载 `GRID_HOME`,`oracle` 加载 `ORACLE_HOME`)。
3. **强制操作**:多数命令加 `-f` 可强制执行(如 `srvctl stop database -d p19c0 -f`),谨慎使用。

更多推荐