目录一、RAC集群的启停操作1.1.前提须知1.2.Oracle集群服务中的关键进程组件二、启动Oracle集群2.1.确保共享存储已启动如果存在存储系统管理员2.2.验证集群服务状态grid2.3.验证ASM实例状态2.4.启动数据库实例2.5.验证监听器和服务2.6.连接到数据库三、停止Oracle集群3.1.停止数据库实例3.2.停止节点级服务VIP、监听器3.3.停止ASM实例3.4.停止集群服务切换到root用户3.5.停止HASroot3.6.关闭操作系统一、RAC集群的启停操作1.1.前提须知Oracle RAC集群的启停有严格的顺序要求需要严格遵循先底层、后上层的顺序以确保依赖关系正常。开机顺序从下往上操作系统 → 集群服务 → 数据库实例关机顺序从上往下数据库实例 → 集群服务 → 操作系统这个顺序的核心逻辑是集群服务Clusterware是RAC的“基础设施”它管理着VIP、监听器、ASM、数据库等所有资源。如果关机时先关集群服务再关数据库可能导致数据丢失或OCR不一致。反过来开机时必须先让集群服务完全就绪数据库才能正常启动。1.2.Oracle集群服务中的关键进程组件组件层级进程/服务名称作用集群基础层ohasdOracle High Availability Services DaemonRAC集群的“根进程”负责启动其他所有集群组件集群同步层cssdCluster Synchronization Services集群节点间心跳、磁盘心跳节点成员管理ctssdCluster Time Synchronization Services集群节点间时间同步evmdEvent Manager集群事件管理资源管理层crsdCluster Ready Services核心资源管理负责启动、停止数据库ASM、监听器等。gpnpd集群配置管理11g后引入网络与服务层VIPVirtual IP应用连接的虚拟IP故障时漂移到其他节点SCAN VIPSingle Client Access Name11g后引入为客户端提供统一的访问入口Listener监听器接收客户端连接请求存储层ASM实例管理共享磁盘组OCR、Voting Disk、数据文件数据库层数据库实例PMON、SMON、DBWR、LGWR、CKPT、RECO等实际数据服务注意ASM实例在11g及以后版本中承载着OCR和Voting Disk这是RAC的核心元数据存储必须优先保证其可用。二、启动Oracle集群2.1.确保共享存储已启动如果存在存储系统管理员确保共享存储如ASM磁盘组、NFS、SAN比RAC节点先启动。如果存储未就绪集群服务启动时会因无法访问OCR/Voting Disk而失败共享存储搭建的过程中一般就已配置为开机自启动不过为保险起见任需先行进行检查。启动各节点操作系统正常启动即可。srvctl status asm -asqlplus / as sysasmSELECT name, state, total_mb, free_mb FROM v$asm_diskgroup;节点1节点2或则asmcd lsdg磁盘组的状态为MOUNTED即为正常2.2.验证集群服务状态gridRAC集群默认配置为随操作系统自动启动开机后可检查启动命令# 方法一手动启动当前节点的集群crsctl start crs# 方法二启动所有节点集群crsctl start cluster -all# 以 grid 用户执行以下验证# 1. 检查整体集群状态crsctl check cluster -all# 期望输出节点状态为 ONLINE# 2. 检查CRS整体状态crsctl check crs# 期望输出# CRS-4638: Oracle High Availability Services is online# CRS-4537: Cluster Ready Services is online# CRS-4529: Cluster Synchronization Services is online# CRS-4533: Event Manager is online# 3. 检查ohasd进程crsctl check has# 期望输出Oracle High Availability Services is online# 4. 检查ctssd时间同步crsctl check ctss# 期望输出CTSS is in Observer mode 或 Active mode[citation:4]# 5. 查看所有资源详细状态crsctl status resource -t2.3.验证ASM实例状态ASM实例随集群启动而启动无需单独操作。验证# 以grid用户执行srvctl status asm -n p19c01节点名# 期望输出ASM 实例 ASM1 在节点 p19c01 上正在运行2.4.启动数据库实例# 以oracle用户执行# 启动整个数据库所有节点srvctl config database -d p19c0# 或启动指定实例srvctl start instance -d p19c0 -i p19c012.5.验证监听器和服务验证监听器状态lsnrctl status若没有启动就进行启动lsnrctl start再次验证lsnrctl status2.6.连接到数据库-- 在任意一个节点上查询 v$instance (只能看登录节点的视图)SQL SELECT INSTANCE_NAME, HOST_NAME, STATUS FROM V$INSTANCE;-- 在任意一个节点上查询 gv$instance (全局视图能看到集群的所有节点)SQL SELECT INSTANCE_NAME, HOST_NAME, STATUS FROM GV$INSTANCE;三、停止Oracle集群3.1.停止数据库实例目标状态数据库OPEN→MOUNT→SHUTDOWN# 以 oracle 用户执行# 1. 查看当前数据库状态srvctl status database -d p19c0# 2. 停止整个数据库所有节点srvctl stop database -d p19c0# 或停止指定节点上的实例srvctl stop instance -d orcl -i p19c01/p19c023.2.停止节点级服务VIP、监听器关键提示srvctl stop instance只停数据库进程不停VIP、监听器、ASM和集群服务不能直接关机。crsctl status resource -t | grep -E vip|lsnr|ons# 以 grid 用户执行# 1. 首先停止所有依赖于 VIP 的资源。这里主要是监听器。# 如果有数据库实例运行也应该先停止数据库。srvctl stop listener -n p19c013.3.停止ASM实例# 以 grid 用户执行# 停止指定节点上的ASM实例srvctl stop asm -n p19c01srvctl stop asm -n p19c023.4.停止集群服务切换到root用户crsctl stop cluster -all3.5.停止HASrootcrsctl stop has3.6.关闭操作系统