root 4408 1 0 04:23 ? 00:00:05 /oracle/app/grid/product/11.2.0/bin/cssdmonitor
root 4427 1 0 04:23 ? 00:00:05 /oracle/app/grid/product/11.2.0/bin/cssdagent
grid 4445 1 0 04:23 ? 00:00:56 /oracle/app/grid/product/11.2.0/bin/ocssd.bin [grid@node1 bin]$ ps -ef|grep crs
root 4767 1 0 04:24 ? 00:00:20 /oracle/app/grid/product/11.2.0/bin/crsd.bin reboot
[grid@node1 bin]$ ps -ef|grep evm
grid 4623 1 0 04:24 ? 00:00:07 /oracle/app/grid/product/11.2.0/bin/evmd.bin grid
4861
4623
0
04:24
?
00:00:00
-o -l
/oracle/app/grid/product/11.2.0/bin/evmlogger.bin /oracle/app/grid/product/11.2.0/evm/log/evmlogger.info /oracle/app/grid/product/11.2.0/evm/log/evmlogger.log
我们来看一下各个进程的作用: OCSSD
进程是Clusterware最关键的进程,如果出现异常会导致系统重启,这个进程提供CSS(Cluster Synchronization Service)服务,它通过多种心跳机制实时监控集群的健康状态,提供集群的基础服务功能。
CRSD
是实现高可用的主要进程,它提供了CRS(Cluster Ready Service)服务。这些服务包括Clusterware上集群资源的关闭、重启、转移、监控等。集群资源分为两类:一类是Nodeapps型的,就是说每个节点只需要一个就行,这类有GSD(Global Service Daemon)、ONS(Oracle Notification Service Daemon)、VIP、Listener;另一类是Database-Related,就是和数据库相关,不受节点限制,这类有Database、Instance、Service等。
EVMD
该进程负责发布CRS产生的各种事件,同时也是CRSD和CSSD两个进程之间的桥梁。 RACGIMON
该进程负责检查数据库健康状态,负责Service的启动、停止、故障转移等。 OPROCD
在非Linux平台,且没有使用第三方集群软件时才有该进程,用来检测节点的CPU挂起,起过1.5
9
秒会重启节点。
OHASd
Oracle在11gR2引入了OHASd(Oracle High Availability Services Daemon,Oracle高可用服务后台进程),再由它来启动其他的集群件守护进程。
3. 网络组件
我们从RAC集群架构中的硬件环境组成已经知道,集群环境中的节点上必须配置两块物理网卡,在公网网卡上面我们除了设置公有IP外还设置了VIP,Oracle的TAF(所谓TAF就是连接建立后,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他健康实例上,对于应用程序而言,这个迁移过程透明,不需要人工介入)是建立在VIP技术上的,它与IP最主要的不同就是VIP是浮动的,IP是固定的,当某个节点宕机时,该节点上的VIP自动会移到健康节点的公网网卡上,所能对该节点的连接自动会移到健康节点。
VIP还有几个特点需要我们注意一下:
a) VIP是在Clusterware安装最后阶段通过脚本vipca创建的;
b) VIP作为一个Nodeapps类型的CRS资源注册到OCR,并由CRS维护状态; c) 每个节点的监听会同时在Public网卡的Public Ip和VIP两个地址上监听; d) 客户端的tnsnames.ora一般配置指向节点的VIP
2.3 单实例与RAC环境
1、 单实例与RAC环境对比
组件 SGA 后台进程 数据文件 控制文件 联机重做日志文件 单实例 实例有自己的SGA RAC 每个实例有自己的SGA 实例有自己的后台进程集 每个实例有自己的后台进程集 仅由一个实例访问 仅由一个实例访问 由所有实例共享,必须放于共享存储上 由所有实例共享,必须放于共享存储上 专供一个实例写入与读取 只有一个实例可以写入,但其他实例可以在回复和归档期间读取,如果一个实例关闭,那么其他实例的日志切换可以对空闲实例日志进行归档 10
归档重做日志文件 闪回日志 告警日志与其他跟踪文件 ORACLE_HOME 专供一个实例使用 专属于一个实例,但在介质恢复期间,其他实例需要访问所需的归档日志 专供一个实例使用 专供一个实例使用 由所有实例共享,必须放于共享存储上 专属于每个实例,其他实例不会读写这些文件 同一个节点上访问不同数据库的多个实例可以使用相同的可执行文件 通常与单个实例相同,但也可以放置于共享文件系统中,允许所有实例共用一个ORACLE_HOME 2、 RAC新增的组件和后台进程
RAC的环境中虽然每个实例都有自己的buffer cache与shared pool,但它们现在已经变成全局的,需要特殊处理才能做到没有冲突、无损坏地管理资源,所以也新增了一些单实例环境中没有的组件,最主要的有以下两部分: 1) GRD
RAC实例的SGA中多了一个GRD(Global Resource Directory)部分,Oracle数据库中数据的操作都是在内存SGA中完成的,与传统的单实例数据库不同,RAC有多个实例,每个数据块在任何一个实例中都有拷贝,RAC必须知道这些拷贝的分布、版本、状态,而GRD就是保存这种信息的内存区。值得注意的是,每个节点都只有部分GRD内容,所有节点合在一起才能构成完整的GRD。 2) 后台进程
RAC也有和单实例中的DBWR、LGWR、ARCn、CKPT这些后台进程,此外还有一些RAC特有的后台进程: lms
该进程是Cache Fusion的主要进程,负责数据块在实例间的传递,对应的服务是GCS(Global Cache Service),可以通过GCS_SERVER_PROCESSES参数来控制进程的数量,默认是2个,取值范围为0~9。 lmd
该进程提供GES(Global Enqueue Service)服务,在多个实例间协调对数据块的访问序,保证数据的一致性访问,和LMSn进程以及GRD共同构成RAC的核心功能Cache Fusion。 lck
这个进程负责Non-Cache Fusion资源的同步访问,每个实例都有一个LCK进程。 lmon
各个实例的LMON进程都会定期通信,检查集群中各节点的健康状态,当某个节点出现故障,该进程负责集群重构、GRD恢复等,它提供的服务是CGS(Cluster Group Services)。 diag
Diag进程监控实例的健康状态,并在实例出现运行错误时收集诊断数据记录到Alert.log日志中。 GSD
这个进程负责从客户端工具,比如srvctl接收用户命令,为用户提供管理接口。
11
3 Oracle 11g RAC集群搭建
该部分详细内容参与RAC的搭建文档
4 维护
4.1 集群维护
CRS有一整套的工具集,它们都出现在$GRID_HOME/bin目录下,在$ORACLE_HOME中也有部分CRS工具可用,但Oracle推荐只使用$GRID_HOME/bin目录下的工具集。常用的有crsctl、crs_stat、diagcollection.pl、oifcfg等,下面介绍一些简单的应用。 4.1.1
启动和停止CRS
通常,RAC环境中的CRS都配置成了随机自动启动,但有时候需要调试CRS,或者OS需要维护,或者需要为GI软件打补丁时,需要手工启停CRS,手工启停CRS的命令很简单,与以前版本也是一致的,开启CRS:crsctl start crs,关闭CRS:crsctl stop crs,依旧需要特权用户root来完成CRS的启停。
11g还引入了一个命令集来启停所有节点上运行的全部集群资源,包括数据库实例、ASM、VIP等等资源,非常方便:
Usage:
crsctl start cluster [[-all]|[-n
Default Start local server -all Start all servers
-n Start named servers
server [...] One or more blank-separated server names 例如:
停止所有节点上的css及资源: crsctl stop cluster -all
启动所有节点上的css及资源: crsctl start cluster -all 4.1.2
验证CRS
下面这些命令用来验证集群及其相关进程的状态(以grid、root用户执行皆可)。 ? 检查一个集群的当前运行状态:
12