RAC集群是由多个物理计算机组成(每个叫做一个节点),这些节点通过网线连接(心跳线),每个节点上运行一个实例,这些实例通过一个特殊的软件(clusterware 集群件)的协助共同操作一个数据库,从外部来看是一个数据库。RAC集群由存储层,网络层,集群件层,应用层组成。

存储层:
RAC是一个多实例,单数据库的系统。数据文件,联机日志,控制文件等在集群中只有一份。不管有几个节点,都平等的操作这些数据文件。这份数据一般单独存储,服务器通过光纤线连接在存储设备上。虽然RAC有多个实例,但是只有一个数据库,数据库保存在共享存储上
在oracle中,实例和数据库这两个概念是不同的,实例特指SGA内存和后台进程组成的运行环境(动态概念),而数据库特指数据文件,控制文件,,日志文件等保存在存储设备上的文件(静态概念)
oracle的实例和数据库是N:1的关系(N>=1),在单实例中是1:1的关系。

网络层:
在整个RAC环境中,实际有三个网路存在。一个是Public网卡接入的网络,用于对外提供数据操作等功能,一个是Private网卡组成的私有网络,用于RAC心跳,Cache fusion,第三个是存储设备与节点之间的网络。
注意的是:前两个网络上传输的是IP数据,另一个网络传输的是SCSI数据

集群件层:
在单机环境中,oracle运行在操作系统之上,OS kernel负责管理硬件设备,并提供硬件访问接口,oracle不直接操作硬件,而是由操作系统完成,到了集群环境中,存储设备是共享的,OS 的设计是针对单机的,只能控制单机上多个进程之间的访问,如果依赖于操作系统就无法控制多个主机之间的协调工作,在RAC中,这个机制就是位于oracle 和操作系统之间的clusterware,它会在os 之前截获请求,然后和其他节点协商,完成上层的请求。

应用层:
集群环境中,集群软件CRS对运行在其上的应用进行监视,并在发生异常时进行重启,切换等干预手段,这些被CRS监控的对象叫做CRS Resource ,是在RAC安装过程中自动创建的,并注册到CRS中,以元数据形式被记录在OCR磁盘中,元数据包括Resource的名称,如何启动,停止,等健康状况等配置信息