来自农村的老实娃
分类: Oracle
2011-08-03 13:44:13
对于新接触集群环境的人来说,Oracle RAS 是这样一项技术:两个或多个共享相同物理数据库的 Oracle 关系数据库管理系统 (RDBMS) 实例。多个用户可以通过参与集群的任何实例访问数据(即,数据的相同实例),他们可以查看数据的准确副本。
图 2 Oracle RAC 配置
如图 2 所示,以下是 Oracle RAC 实现相对于单实例配置特有的特征:
许多 Oracle Database 实例在许多节点上运行。通过实现 Oracle Database 11g 第 2 版中提供的特性(如服务器池),不再像之前版本中那样对实例到服务器/节点的亲和性作硬性要求,从而为基于集群环境中的负载动态供应实例提供了机遇。
多个实例共享一个物理数据库。
所有实例具有通用的数据和控制文件。无论集群中有多少实例,只有一组数据文件和控制文件。
每个实例都有自己的日志文件和还原段。
所有实例可同时对一个物理数据库执行事务。
参与集群配置的实例利用缓存融合技术通过集群互连进行通信。
Oracle RAC 跨集群互连在实例间维护缓存同步。
每个节点都包含一个虚拟 IP 地址,供连接到数据库的用户会话使用。
集群维护一个 SCAN 地址,该允许用户动态连接到负载最低的任意服务器。(SCAN 地址类似于 OpenVMS 和 Tru64 操作系统中的集群别名特性。这些地址是智能的,知道集群中的哪些服务器的负载最低,从而将新连接放在负载最低的服务器上。有关 SCAN 工作原理的讨论不在本文档的讨论范围内。)
每个节点都包含一个 Oracle Automatic Storage Manager 实例,提供对存储基础架构的访问并提供选项,例如在数据库得到有效利用时添加和删除存储。
所有参与的节点利用 Oracle Clusterware 彼此协调,实现成员可用性和表决。
用户查询数据库中的数据时,将从存储子系统检索数据并加载到缓冲区缓存中,遍历数据直至提取出最终结果集。然后将最终数据集发送给用户。之后,如果其他用户执行相同的查询,将从缓冲区缓存中读取数据,并将数据结果集返回给用户。数据并非始终可用。如果缓冲区空间不足或者另一个会话修改了数据,则要求刷新并重新加载缓冲区中的数据。
在 Oracle RAC 环境中,用户从不同实例执行查询时,不再是使用每次都必须从 I/O 子系统检索数据的 DBWR 进程,而是(通常)通过一个实例到另一个实例的互连传输数据。(在 Oracle Database 11g 第 2 版中,缓存合并技术内使用的新增的“bypass reader”算法会在读取大量行时跳过数据传输,转为使用来自请求实例的本地 I/O 子系统检索数据。)这能提供可观的性能收益,因为从 I/O 子系统检索数据的延迟与通过网络传输数据相比要高得%B