菜鸟科技网

rac常用命令有哪些?

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

rac常用命令有哪些?-图1
(图片来源网络,侵删)

集群状态检查命令

集群状态是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)及公共/私有网络,需确保网络高可用。

rac常用命令有哪些?-图2
(图片来源网络,侵删)
  • 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:可通过以下步骤确认:

  1. 使用srvctl status database -d <数据库名>查看实例状态,若显示“Instance <实例名> is running”,则实例已启动;
  2. 通过sqlplus / as sysdba@<实例名>连接实例,执行SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE确认实例状态为“OPEN”;
  3. 检查集群资源状态:crsctl status resource -w "TYPE=ora.<实例名>.db",确保资源状态为“ONLINE”。

Q2:RAC节点故障后,如何手动将VIP资源迁移到其他节点?
A:手动迁移VIP需通过以下步骤:

rac常用命令有哪些?-图3
(图片来源网络,侵删)
  1. 确认故障节点VIP状态:crsctl status resource -w "TYPE=VIP && NODE=<故障节点名>",若状态为“OFFLINE”,则 proceed;
  2. 在目标节点执行srvctl start vip -n <目标节点名> -i <VIP名>(VIP名可通过crsctl status resource -w "TYPE=VIP"查询);
  3. 验证VIP状态:ifconfig <网卡名>:1确认VIP已绑定到目标节点,并通过crsctl status resource确认资源状态为“ONLINE”。
分享:
扫描分享到社交APP
上一篇
下一篇