Oracle Real Application Clusters(RAC)是Oracle数据库的一种高可用性解决方案,它允许多个数据库实例在一组共享存储上并行运行,从而提供更高的性能和容错能力。本文将详细分析Oracle RAC的工作原理。
一个Cluster是由两个或多个独立的、通过网络连接的服务器(Servers)组成的。Cluster的主要目的有两个:
Cluster对外可以看作一个单独的服务器,像管理单独服务器一样管理Cluster中的服务器。简而言之,一个Cluster就是一组独立的服务器,共同协作,组成一个单独的系统。
RAC是Oracle的一个软件结构,将数据库文件存放在物理或逻辑上连接每个节点的磁盘上。RAC软件管理着数据的访问,更改操作在实例(Instances)之间是被相互协调的,以便于每个节点上活动的实例都可以对文件进行读写操作,并且每个实例看到的信息和数据镜像都是一致的。
所有的数据库实例都连接到同一个共享存储系统,这个存储系统可以是SAN(Storage Area Network)或者NAS(Network Attached Storage)。
每个实例都有自己的内存缓存,但这些缓存在逻辑上是一个整体。也就是说,一个实例对数据的修改会立即反映到其他实例的缓存中。Oracle RAC使用一种称为“缓存融合”的技术来实现缓存的一致性。当一个实例修改了缓存中的数据,它会将这些修改记录在一个称为“更改向量”的数据结构中,这个实例会将这些更改向量发送给其他的实例,其他的实例收到更改向量后,会将这些修改应用到自己的缓存中。
所有的实例都可以独立地处理SQL语句和事务,这样就可以实现并行处理,提高系统的整体性能。
如果一个实例失败,其他的实例可以检测到这个失败,并自动接管失败实例的工作,这个过程被称为“故障切换”。在故障切换过程中,其他的实例会自动启动失败实例的服务,并将失败实例的会话迁移到其他实例。这样,即使有实例失败,用户也可以继续他们的工作,而不会感觉到任何中断。
全局资源管理器(Global Resource Manager)负责管理和调度所有的实例和服务。
RAC实例比普通实例多一些后台进程,这些进程主要用于管理全局资源,维持数据库在每个实例中的一致性。
管理Cluster中全局层次上的各种资源(ASM Instance、RAC Database、Services和CRS应用节点)的工具,主要有Server Control(SRVCTL)、DBCA和Enterprise Manager。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。