菜鸟科技网

rac维护命令有哪些?

前置准备:连接到集群节点

在执行大多数 RAC 管理命令之前,你需要:

rac维护命令有哪些?-图1
(图片来源网络,侵删)
  1. oracle 用户身份登录 到集群的任意一个节点。
  2. 设置正确的环境变量,最简单的方式是进入对应数据库的 home 目录,然后执行 source 脚本。
# 示例:连接到节点 rac1,设置 ORACLE_HOME 环境变量
ssh oracle@rac1
cd /u01/app/oracle/product/19.3.0/dbhome_1
. oraenv
# 输入数据库名称,ORCLCDB

核心管理命令 (srvctl)

srvctl 是最重要的工具,其命令格式通常为:srvctl <object> <action> -db <db_name> ...

数据库 级别管理

srvctl database 用于管理整个 RAC 数据库。

命令 功能 示例
start 启动数据库的所有实例和相关资源(如监听器、VIP)。 srvctl start database -d ORCLCDB
stop 停止数据库的所有实例和相关资源。 srvctl stop database -d ORCLCDB
status 查看数据库及其所有实例的运行状态。 srvctl status database -d ORCLCDB
add 向集群注册一个新的数据库。 srvctl add database -d ORCLCDB -o /u01/app/oracle/product/19.3.0/dbhome_1 -p /u01/app/oracle/admin/ORCLCDB/pfile/init.ora
remove 从集群中移除一个数据库(通常需要先停止)。 srvctl remove database -d ORCLCDB -f
modify 修改已注册数据库的配置信息(如 ORACLE_HOME、PFILE 路径)。 srvctl modify database -d ORCLCDB -o /new/oracle/home
relocate 将数据库的 VIP 和 SCAN VIP 从一个节点移动到另一个节点(通常用于维护)。 srvctl relocate database -d ORCLCDB -n rac2

实例 级别管理

srvctl instance 用于管理数据库中的单个实例。

命令 功能 示例
start 启动指定的数据库实例。 srvctl start instance -d ORCLCDB -i ORCLCDB1
stop 停止指定的数据库实例。 srvctl stop instance -d ORCLCDB -i ORCLCDB1
status 查看指定实例的状态。 srvctl status instance -d ORCLCDB -i ORCLCDB1
add 向数据库中添加一个新实例。 srvctl add instance -d ORCLCDB -i ORCLCDB2 -n rac2
remove 从数据库中移除一个实例。 srvctl remove instance -d ORCLCDB -i ORCLCDB2 -f

监听器 管理监听器

srvctl listener 用于管理集群监听器。

rac维护命令有哪些?-图2
(图片来源网络,侵删)
命令 功能 示例
start 启动所有监听器或指定监听器。 srvctl start listener
stop 停止所有监听器或指定监听器。 srvctl stop listener
status 查看监听器状态。 srvctl status listener
add 添加一个监听器。 srvctl add listener -l LISTENER_SCAN2
remove 移除一个监听器。 srvctl remove listener -l LISTENER_SCAN2

VIP (Virtual IP) 管理

srvctl vip 用于管理虚拟 IP 地址。

命令 功能 示例
start 启动指定节点的 VIP。 srvctl start vip -n rac1
stop 停止指定节点的 VIP。 srvctl stop vip -n rac1
status 查看 VIP 状态。 srvctl status vip -n rac1

其他重要 srvctl 命令

命令 功能 示例
config 查看当前集群资源的配置信息。 srvctl config database -d ORCLCDB
getenv 获取数据库或实例的环境变量。 srvctl getenv database -d ORCLCDB
setenv 设置数据库或实例的环境变量。 srvctl setenv database -d ORCLCDB -T "NLS_LANG=AMERICAN_AMERICA.AL32UTF8"

OCR 和 Voting Disk 管理

OCR (Oracle Cluster Registry) 和 Voting Disk 是集群高可用性的核心,通常使用 crsctl 工具管理。

OCR 管理

命令 功能 示例
query 查看 OCR 的位置和状态。 crsctl query crs storage
backup 手动备份 OCR。 crsctl backup ocr
restore 从备份恢复 OCR。 crsctl restore ocr -latest
check 检查 OCR 的完整性。 ocrcheck
replace 替换 OCR 文件(用于磁盘故障或迁移)。 crsctl replace ocr -new_ocr_location /new/disk/ocrfile

Voting Disk 管理

命令 功能 示例
query 查看 Voting Disk 的位置和状态。 crsctl query css votedisk
backup 备份 Voting Disk。 crsctl backup votedisk
add 添加新的 Voting Disk。 crsctl add votedisk /new/disk/votedisk
delete 删除 Voting Disk。 crsctl delete votedisk /old/disk/votedisk
replace 替换 Voting Disk。 crsctl replace votedisk /old/disk/votedisk

集群服务和 ASM 管理

集群服务 管理

命令 功能 示例
start 启动集群服务。 srvctl start service -d ORCLCDB -s SERVICE_NAME
stop 停止集群服务。 srvctl stop service -d ORCLCDB -s SERVICE_NAME
status 查看服务状态。 srvctl status service -d ORCLCDB -s SERVICE_NAME
add 添加一个服务。 srvctl add service -d ORCLCDB -s SERVICE_NAME -r "ORCLCDB1,ORCLCDB2" -a "ORCLCDB1,ORCLCDB2" -P BASIC
remove 移除一个服务。 srvctl remove service -d ORCLCDB -s SERVICE_NAME

参数说明:

  • -r:Preferred Instances(首选实例)。
  • -a:Available Instances(可用实例)。
  • -P:Policy(服务策略),如 BASIC, FAILOVER, NONE

ASM (Automatic Storage Management) 管理

ASM 实例本身也是一个数据库,因此也使用 srvctl 管理。

rac维护命令有哪些?-图3
(图片来源网络,侵删)
命令 功能 示例
start asm 启动 ASM 实例。 srvctl start asm -n rac1
stop asm 停止 ASM 实例。 srvctl stop asm -n rac1
status asm 查看 ASM 实例状态。 srvctl status asm -n rac1
start diskgroup 启动指定的磁盘组。 srvctl start diskgroup -g DATA
stop diskgroup 停止指定的磁盘组。 srvctl stop diskgroup -g DATA

状态查看和诊断命令

集群整体状态

命令 功能 示例
olsnodes 列出集群中的所有节点名称。 olsnodes -n
crsctl check cluster 检查整个集群的运行状态。 crsctl check cluster -all
crsctl status resource 查看集群资源(如数据库、监听器)的详细状态。 crsctl status resource -t
crsctl stat res ora.orclcdb.db 查看特定数据库资源的详细状态。 crsctl stat res ora.orclcdb.db -p

ASM 相关状态

命令 功能 示例
asmcmd ASM 命令行工具,用于管理磁盘组和文件。 asmcmd
asmcmd lsdg 列出所有磁盘组及其状态。 asmcmd lsdg
asmcmd lsdsk 列出所有 ASM 磁盘。 asmcmd lsdsk -G DATA

重要维护场景示例

场景1:计划停机维护一个节点(以 rac1 为例)

  1. 将数据库实例从 rac1 迁移到 rac2

    # 检查实例运行在哪个节点
    srvctl status instance -d ORCLCDB -i ORCLCDB1
    # 停止 rac1 上的实例
    srvctl stop instance -d ORCLCDB -i ORCLCDB1 -o immediate
  2. 停止 rac1 上的 VIP 和监听器

    srvctl stop vip -n rac1
    srvctl stop listener -n rac1
  3. 停止 rac1 上的 ASM 实例

    srvctl stop asm -n rac1
  4. 停止 rac1 上的集群资源(可选,通常由 crsctl stop has 完成)

    # 在 rac1 上执行
    crsctl stop has
  5. 完成维护后,启动 rac1

    # 启动 HAS
    crsctl start has
    # 启动 ASM
    srvctl start asm -n rac1
    # 启动监听器和 VIP
    srvctl start listener -n rac1
    srvctl start vip -n rac1
    # 启动数据库实例
    srvctl start instance -d ORCLCDB -i ORCLCDB1

场景2:添加一个新的数据磁盘组

  1. 在存储层面准备好新的磁盘 (/dev/sdb1)。
  2. 在所有节点上设置正确的磁盘权限
    # 在所有节点执行
    chown oracle:dba /dev/sdb1
    chmod 660 /dev/sdb1
  3. 使用 asmcaasmcmd 创建磁盘组
    # 使用 asmcmd (在任意节点上)
    asmcmd
    ASMCMD> mkdg -F HIGH -A 2M DATA2 /dev/sdb1
  4. 使用 srvctl 将新的磁盘组注册到集群
    srvctl add diskgroup -g DATA2 -l /dev/sdb1
功能模块 主要工具 核心命令
数据库/实例/服务 srvctl start, stop, status, add, remove, modify
监听器/VIP srvctl start, stop, status, add, remove
OCR/Voting Disk crsctl query, backup, restore, replace, add, delete
ASM srvctl, asmcmd start asm, stop asm, lsdg, mkdg
状态查询 srvctl, crsctl, olsnodes status, check cluster, stat res

重要提示

  • 生产环境操作务必谨慎,建议在维护窗口期进行。
  • 在执行任何 removereplace 操作前,务必先进行备份
  • 阅读官方文档(Oracle Documentation)以获取针对你具体版本的最准确信息。
分享:
扫描分享到社交APP
上一篇
下一篇