请教RAC环境各个节点间算不算分布式能源事务

对于访问 Oracle 数据库而言,Oracle Real Application Cluster (RAC) 可用于高可用性和工作负载管理。可以将 Oracle JDBC 驱动程序配置为在 IBM WebSphere Application Server 环境中提供这两种服务质量。遗憾的是,使用 10g 版本的 Oracle JDBC 驱动程序在多个 Oracle RAC 节点中进行工作负载管理会造成微妙的两阶段提交 (2PC) 分布式事务恢复问题。
在简单介绍 Oracle RAC 之后,本文将说明此事务恢复问题背后的原因,并详细介绍用于 WebSphere Application Server 环境的简单 Oracle RAC 配置,该配置可以避免事务恢复问题。
Oracle RAC 是一个可“共享一切”的体系结构,用于获得数据库高可用性和负载平衡,在此体系结构中,有两个或多个 Oracle RAC 节点集群在一起,共享同一存储区(图 1)。
RAC 节点通过高速互连连接在一起,此互连方式支持 Oracle 节点之间的快速通信,可以在启动、锁定信息、事务信息、数据等过程中交换各种类别的数据块所有权信息。
在 Oracle RAC 环境中,每个 Oracle 数据块都被赋予一个(且只有一个)“主”Oracle RAC 节点。该 Oracle RAC 节点的全局缓存服务 (GCS) 负责管理对这些数据块集的访问。当其中一个 Oracle 节点需要访问某个 Oracle 数据块时,它必须首先与该数据块协商。然后,该主节点的 GCS 或者指示请求的 Oracle 节点从磁盘中获取该数据块,或者指示该Oracle 数据块的当前持有者将被请求的数据块发送到请求节点。Oracle 尝试跨所有 RAC 节点统一分发该数据块的所有权。在
Oracle RAC 环境中,数据块大致相等的所有节点都将被指定为主节点。(如果 Oracle RAC 节点数是 Oracle 数据块数的约数,则所有 RAC 节点都是具有同样数量的数据块的主节点。)
使用 Oracle 数据库的 WebSphere Application Server 应用程序通过 Oracle JDBC 驱动程序获取数据库连接。在 Oracle RAC 环境中,可以将 Oracle JDBC 驱动程序配置为用于故障转移或负载平衡(或者同时用于两者)。如果将 JDBC 驱动程序配置为支持故障转移,则在 RAC 节点出现故障时,以前从故障节点中获取连接的 WebSphere Application Server 应用程序必须能够透明地切换到其他运行的 RAC 节点。(为了能够透明地切换,可以将应用程序编码为捕获
StaleConnection 异常,并重试指定的连接次数来获取新的连接句柄。在请求获取连接时,Oracle JDBC 驱动程序将从运行的 RAC 节点提供物理连接。)该 JDBC 驱动程序将从运行的 RAC 节点获取新的连接。事实上,当一个或多个 RAC 节点出现故障时,正确编码的 WebSphere Application Server 应用程序应能够继续以几乎无中断的方式正常运行,但前提是将 RAC 配置为用于高可用性,当然,还需要有一些 RAC 节点处于活动状态。(您可能会注意到应用程序在响应上出现瞬间延迟,这是因为,作为故障转移过程的一部分,Oracle
需要传输故障 RAC 节点所拥有的数据块并将其统一分发给其他运行的 RAC 节点。在此重构过程中,Oracle 将在短时间内冻结数据库。)
除高可用性外,还可以将 Oracle RAC 配置为提供工作负载平衡;数据库的工作负载平衡在连接级别发生。Oracle 使用随机算法把连接请求分发给 RAC 节点。对于每个连接请求,Oracle JDBC 驱动程序将随机选择一个 RAC 节点来获取连接。一般情况下,此类随机分发算法以统一方式使用全部 RAC 节点。例如,如果在两节点的 Oracle RAC 环境中进行 100 个数据库连接请求,则将使用每个 RAC 节点来获取大约 50 个数据库连接。
图 2 描述了 WebSphere Application Server 集群环境中的典型 RAC 物理拓扑,在此环境中,同时支持故障转移和负载平衡服务质量。
WebSphere Application Server 集群包括两个成员:cluster-member1 和 cluster-member2。Oracle RAC 物理配置包括两个节点:rac-node1 和 rac-node2。RAC 节点可以与 WebSphere 集群成员位于同一物理机制中,也可以位于完全不同的机制中,如图 2 所示。(实际位置并不影响 RAC 所提供的基本服务质量。)
为了实现高可用性和负载平衡,您可以为这两个 WebSphere 集群成员指定 Oracle 数据源 URL,如下所示:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST= rac-node1)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST= rac-node2)(PORT=1521))
(FAILOVER=on)(LOAD_BALANCE=on)
(CONNECT_DATA=(SERVER=DEDICATED)
(SERVICE_NAME=&dbname&)))
由于设置了 FAILOVER 属性,所以,如果任一 RAC 节点(例如 rac-node1)变得不可用,当请求新连接时,oracle JDBC 驱动程序将从另一仍在运行的 Oracle RAC 节点(在此情况下是 rac-node2)返回连接。
此外,由于将 LOAD-BALANCE 属性指定为“on”,所以 Oracle JDBC 驱动程序将同时从 rac-node1 和 rac-node2 为在 cluster-member1 和 cluster-member2 中运行的应用程序实例提供连接。如上所述,Oracle 将尝试从 rac-node1 和 rac-node2 中获取大致相同的物理连接数。
注意,如果关闭 LOAD_BALANCE 属性,则在数据源 URL 中指定 RAC 节点的顺序就变得非常重要。Oracle JDBC 驱动程序始终尝试从占据列表中第一位置的 RAC 节点获取物理连接。如果第一个 RAC 节点不可用,JDBC 驱动程序将尝试从第二个 RAC 节点中获取连接,依此类推。这说明,对于 URL (1)(在清单 1 中),cluster-member1 的 URL (rac-node1) 是 RAC 主节点。只要 rac-node1 仍在正常运行,将从 rac-node1 中为所有物理连接请求提供服务;rac-node2
不起任何作用。如果 rac-node1 出现故障,Oracle 将从 rac-node2 为 cluster-member1 中发出的连接请求提供服务,rac-node2 是 URL (1) 的第二个 RAC 节点。因此,只要 rac-node1 不能用,来自 cluster-member1 中的所有新连接请求都将由 rac-node2 提供服务。
在这种情况下,图 2 中的完整工作负载管理分两个级别提供。在 WebSphere Application Server 级别,工作负载管理由路由器组件(HTTP 服务器插件、ORB 插件、按需路由器等)提供,它将入站请求分发给适当的集群成员,并维护适当的关联(如果适用)。在入站请求到达在集群成员上执行的应用程序实例后,向数据库发出的新物理连接请求将由 Oracle JDBC 驱动程序在 rac-node1 和 rac-node2 之间进行负载平衡。
如果该应用程序不使用 2PC 分布式事务,上述简单配置就足够了。但是,如果在此简单和易于配置的设置中使用 2PC 分布式事务,可能会存在一些微妙的恢复问题,这将在下一部分中进行说明。
当恢复跨多个 Oracle RAC 节点的 2PC 分布式事务时,Oracle 10g RAC 存在一个固有的问题:在尝试提交或回滚以前在故障 RAC 节点中运行的事务分支(通过活动 RAC 节点)时,事务管理器可能会收到这样一条异常消息“ORA-24756:transaction does not exist”(ORA-24756:事务不存在)。之所以会发生此问题,是因为在 RAC 节点出现故障时,Oracle 将为业务打开其他仍然运行的 RAC 节点,即使在 Oracle RAC 完成与该故障 RAC
节点对应的必要恢复操作之前也如此。
下面是一个描述此问题的假定情形。假设有一个两节点的 Oracle 10G RAC 环境(带有节点 rac-node1 和 rac-node2),在此环境中,同时启用了故障转移和负载平衡:
应用程序在 WebSphere Application Server 集群成员中启动了一个用户事务(称为 UTx)。 在 UTx 边界内,该应用程序请求一个数据库连接。假定该连接是从 rac-node1 提供的。 该应用程序向同一 Oracle 数据库资源管理器请求另一连接,该连接通过 rac-node2 提供,这是另一个 RAC 节点。 这会在两个连接上同时执行工作,从而导致启动两个事务分支:TxB1 和 TxB2。 假设在 WebSphere Application Server 事务管理器发出对 TxB1 的 xa.prepare() 调用之后并调用 xa.commit() 之前,RAC 节点 (rac-node1) 出现故障。
这时,WebSphere 事务管理器将收到 XAER_RMFAIL 返回代码(请参阅),该代码指示资源管理器不可用。
WebSphere 事务管理器将尝试获取到 RAC 的新连接。由于支持故障转移,所以在 RAC 端完成恢复后(即已为业务打开 Oracle RAC),Oracle JDBC 驱动程序将从 rac-node2 提供连接。
WebSphere 事务管理器将通过发出 xa.commit() 尝试完成 TxB1。 Oracle JDBC 驱动程序可能会抛出 ORA-24756:事务不存在这一异常;仍然运行的 RAC 节点 rac-node2 甚至还不知道事务分支 TxB1。
TxB1 将处于一种未决状态,这时,如果 TxB1 正好持有某些数据库锁,则可能会导致问题。 任何对被 TxB1 分支锁定的同一数据库行或表的后续访问尝试都将导致“ORA-01591 lock held by in-doubt distributed transaction”(ORA-01591 锁由未决的分布式事务持有)异常,从而导致数据库的某些部分不可用。
概括而言,如果将 WebSphere Application Server 配置为使用 Oracle JDBC 驱动程序进行连接级别的负载平衡,则 RAC 节点在任何实时 2PC 分布式事务(该事务跨多个 RAC 节点)的准备阶段出现故障时都需要数据库管理员手动干预。该数据库管理员必须完成孤立的事务分支,以释放这些事务分支所持有的数据库锁。对于数据库管理员来说,这是一个包括两个步骤的过程:
通过发出命令获取孤立的事务 ID,如:
sql & select state, local_tran_ID, Global_tran_Id from dba_2pc_pending where state = &prepared&;
然后回滚“准备”阶段中的所有事务 ID:
sql & rollback force '&Global_tran_Id&';
手动干预不是事务恢复的首选方法;有些用户会选择自动而透明的事务恢复策略。透明恢复策略的关键是,对于任何全局事务,消除多个事务分支跨多个 RAC 节点;事务分支对应于全局事务中所用的数据库连接。如果一个全局 2PC 事务中的所有连接都源自同一 Oracle RAC 节点,就不会出现事务恢复问题。
下面简要介绍可以避免上述与 XA 相关的 Oracle RAC 限制的最简单策略:
创建一个 Oracle 分布式事务处理 (DTP) 服务(在 Oracle 10g R2 中引入,用于解决 Oracle 10g XA 的局限性);每项 DTP 服务都是一个单独的服务,可供一个(且只能是一个)Oracle RAC 实例使用。运行以下命令创建一个 DTP 服务:
srvctl add service -d &dbname& -s &servicename& -r &primary nodes& -a &alternate nodes&
通过执行以下命令在 Oracle 服务上启用 DTP:
execute dbms_service.modify_service (service_name =& '&service_name&' , dtp =& true);
确保每个 Oracle DTP 服务都配置为禁用负载平衡(即只有一个主服务)。
配置每个 WebSphere Application Server 集群成员,让其使用在步骤 1 中创建的 Oracle DTP 服务(图 3)。
该 DTP 服务将在首选实例上自动启动。不过,在数据库重启时,该 DTP 服务不会自动启动。您可以使用以下命令启动 DTP 服务:
srvctl start service -d &dbname& -s &service_name&
如果 RAC 节点停止工作,Oracle 需要在完成 Oracle RAC 清理和恢复之后才能对 DTP 服务进行故障转移。即使 Oracle 节点恢复,Oracle DTP 服务也不会返回到刚刚重启的 RAC 节点。相反,数据库管理员需要手动将该服务移动到重启的 RAC 节点。
图 4 描述了前面讨论的拓扑。
注意,从拓扑角度看,图 4 与图 2 一样。唯一的不同是对 Oracle DTP 服务的使用。与 URL (1)(在清单 1 中,其中所有的集群成员都有相同的数据源 URL)不同的是,这里的每个集群成员的数据源 URL 可能是唯一的,并且稍微不同于其他集群成员的数据源 URL。例如,对于瘦驱动程序而言,WebSphere Application Server 集群成员的数据源 URL 如下所示:
jdbc:oracle:thin:@(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node1)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node2)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=&yourOraservice1toBeUsedForCluster1&))) (2)
jdbc:oracle:thin:@(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node2)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac-node1)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=&yourOraservice2toBeUsedForCluster2&))) (3)
对于胖驱动程序而言,URL 会非常类似:jdbc:oracle:oci 代替上述 URL 中的 jdbc:oracle:thin。
当使用 Oracle 服务时,必须对 Oracle 服务定义本身指定负载平衡和故障转移,而不是在 URL 上指定。在使用 Oracle 服务时在 URL 中指定负载平衡或故障转移不会影响 RAC 节点的负载平衡或故障转移。但它会影响 Oracle 侦听器的负载平衡和故障转移。
在图 4 中,整个负载平衡都是在 WebSphere Application Server 级别通过路由器进行的。相关的 WebSphere 路由器维护事务关联,并且属于某项事务的所有请求都将被路由到同一 WebSphere 集群成员。由于 Oracle JDBC 驱动程序不提供任何负载平衡,所有这些入站请求都将打开并使用来自同一 RAC 节点的连接。这可防止任何 2PC 分布式事务跨多个 RAC 节点分布,因而可避免出现事务恢复问题。
由于一般的路由器配置会尝试跨所有的 WebSphere Application Server 集群成员统一分配请求,所以,如果未将每个 RAC 节点都配置为某个集群成员的主节点,则该数据库负载还会跨所有的 RAC 节点分发。如果适用,通过调整相关 WebSphere 路由器的静态权重(HTTP 和统一集群框架路由器的集群成员权重),WebSphere 系统管理员将能够在 RAC 节点之间的数据库负载分发中大致实现所期望的偏斜量。
在关闭负载平衡的情况下,有几点需要注意:
RAC 主节点和辅助节点将在数据源 URL 中按位置指定。 可能会有多个辅助 RAC 节点。但是,只有一个 RAC 节点,即 URL 中 RAC 节点列表中第一个起作用的节点(如 (2))将用来获取物理连接。该节点可称为主要辅助节点。
跨所有 RAC 节点实现统一数据库负载平衡的简单方法是满足以下两个条件:
需要对适用的路由器进行相应配置,使所有 WebSphere 集群成员都可接收到相同比例的通信。 应将每个 RAC 节点配置为可作为主节点,并可作为相同数量的 WebSphere 集群成员的主要辅助节点。在图 4 中,两个 RAC 节点都被配置为一个 WebSphere 集群成员的主节点和主要辅助节点(rac-node1 是 cluster-member1 的主节点,是 cluster-member2 的主要辅助节点;rac-node2 是 cluster-member2 的主节点,是 cluster-member1 的主要辅助节点)。
在 RAC 节点数量是 WebSphere 集群成员数的约数的情况下,上述条件很容易满足。
通过使用本文中介绍的“让 WebSphere Application Server 执行负载平衡”策略,可以使 WebSphere 集群环境更好地应对与事务恢复相关的问题。本文中演示的 URL 还可用于 WebSphere Process Server 环境,以便在出现 RAC 节点故障时自动而顺利地恢复 2PC 分布式事务。
主要-辅助 RAC 节点配置同样适用于独立的 WebSphere Application Server。但是,对于独立服务器,尽管 RAC 能够在连接级别提供故障转移,但却不能进行负载平衡。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11197次
排名:千里之外
转载:35篇
(1)(7)(2)(4)(2)(1)(11)(12)(2)(2)Oracle RAC的基本介绍
RAC,全称real application clusters,译为“实时应用集群”,是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是支持环境的核心技术。
Oracle RAC
RAC提供的优缺点
Oracle RAC主要支持Oracle9i、<span style="color:#g、<span style="color:#g版本,可以支持<span style="color:#
x 7 有效的,在低成本服务器上构建高可用性,并且自由部署应用,无需修改代码。在Oracle
RAC环境下,Oracle集成提供了软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1)多负载均衡;
(2)提供高可用:故障容错和无缝切换功能,将硬件和造成的影响最小化;
(3)通过技术提高响应时间----通常用于数据分析系统;
(4)通过横向扩展提高每秒交易数和连接数----通常对于联机系统;
(5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的或大型机,同时节约相应维护成本;
(6)可扩展性好,可以方便添加删除节点,扩展硬件资源。
(1)相对单机,管理更复杂,要求更高;
(2)在系统规划设计较差时性能甚至不如单节点;
(3)可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费)。
在Oracle9i之前,RAC的名称是OPS (Oracle parallel
Server)。RAC与 OPS之间的一个较大区别是,RAC采用了Cache
Fusion(高速缓存合并)技术。在 OPS
中,间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用Cache
fusion时,RAC的各个节点的通过高速、低延迟的内部网络进行的传输。
2Oracle RAC组件
在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过软件来访问我们的共享存储设备.
上看,每一个参加集群的节点有一个独立的instance(数据库实例),这些instance访问同一个数据库。节点之间通过软件的通讯层(communicationlayer)来进行通讯。同时为了减少IO的消耗,存在了一个全局,因此每一个数据库的instance,都保留了一份相同的数据库cacheI
RAC中的特点是:
每一个节点的instance都有自己的SGA
每一个节点的instance都有自己的backgroundprocess
每一个节点的instance都有自己的redo logs
每一个节点的instance都有自己的undo表空间
所有节点都共享一份datafiles和controlfiles
还提出了一个缓存融合的技术(Cache fusion)
目的有两个
<span style="color:#.保证缓存的一致性
<span style="color:#.减少共享磁盘IO的消耗
因此在RAC环境中多个节点保留了同一份的DB CACHE
缓存融合(Cache fusion)工作原理:
****************************************
<span style="color:#.其中一个节点会从共享数据库中读取一个block到db cache中
<span style="color:#.这个会在所有的节点进行交叉db
block copy
<span style="color:#.当任何一个缓存被修改的时候,就会在节点之间进行缓存修改
<span style="color:#.为了达到存储的一致最终修改的结果也会写到磁盘上
ClusterWare组件
*******************
四种Service
Crsd -资源服务
Cssd - 集群同步服务
Evmd - 事件管理服务
oprocd - 节点检测监控
三类Resource
VIP - 虚拟IP地址(Virtual IP)
OCR - OracleCluster Registry(集群注册文件),记录每个节点的相关信息
Voting Disk -Establishes quorum (表决磁盘),仲裁机制用于仲裁多个节点向共享节点同时写的行为,这样做是为了避免发生冲突。
************
提供过了额外的进程,用来维护数据库
LMS - GobalCache Service Process
LMD - GlobalEnqueue Service Daemon
全局查询服务
LMON - GlobalEnqueue Service Monitor全局查询服务监视进程
LCK0 - InstanceEnqueue Process
实例队列进程
Oracle RAC一般也可构建于大型SMP主机,IBM的AIX系列服务器往往是其中高端平台,Intel
Linux往往作为其低端平台。当UNIX用来运行Oracle
RAC作为大型数据库系统平台时,其构建、实施、运维、高可用设置,有其平台特点。
&&&RAC Architecture and Concepts
&&& 1、RAC软件原理
&&& 在一个RAC Instance中,会见到一些普通Instance中不存在的后台进程,它们主要是用于维持Database在每个Instance中的一致性。管理全局资源,具体如下:
&&& *& LMON:全局队列服务监控进程——Global Enqueue Service Monitor
&&& *& LMD0:全局队列服务守护进程——Global Enqueue Service Daemon
&&& *& LMSx:全局缓冲服务进程,x可以从0到j——Global Cache Service Processes
&&& *& LCK0:锁进程——Lock process
&&& *& DIAG:诊断进程——Diagnosibility process
&&& 在Cluster层,可以找到Cluster Ready Services软件的主要进程,它们在所有平台上提供标准的Cluster接口,并实现高可用性的操作。在每个Cluster node上都可以看到如下的进程:
&&& *& CRSD和RACGIMON:用于高可用性操作的引擎。
&&& *& OCSSD:提供成员节点和服务组的访问
&&& *& EVMD:事件检测进程,由oracle用户运行管理
&&& *& OPROCD:Cluster的监控进程
&&& 此外还存在几个工具用于管理Cluster中全局层次上的各种资源。这些资源是ASM Instance、RAC Database、Services和CRS应用节点。本书中涉及的工具主要有Server Control(SRVCTL)、DBCA和Enterprise Manager。
&&& 2、RAC软件存储原理
&&& Oracle10g的RAC安装分为两个阶段。第一阶段是安装CRS,其次是安装带有RAC组件的Database软件并创建Cluster数据库。CRS软件使用的Oracle home必须不同于RAC软件使用的home。尽管可以将Cluster中CRS和RAC软件通过使用Cluster文件系统共享存储,但是软件总是按一定规则安装在每个节点的本地文件系统中。这支持在线补丁的升级,并消除了单节点软件造成的失败。另外有两个必须存储在共享的存储设备中:
&&& *& voting file:其本质上是用于Cluster synchronization Services守护进程进行节点信息的监控。大小约为20MB。
&&& *& Oracle Cluster Registry(OCR)文件:也是CRS关键的组成部分。用于维护在Cluster中高可用性组件的信息。例如,Cluster节点列表,Cluster数据库Instance到节点的映射和CRS应用资源的列表(如Services、虚拟内部链接协议地址等)。此文件是通过SRVCTL类&#20284;的管理工具自动维护的。其大小约100MB。
&&& voting file和OCR file是不能被存储在ASM中的,因为它们必须在任何Oracle Instance启动前就可以被访问。并且,两者必须是在冗余的、可靠的存储设备中存放,如RAID。推荐最好的做法是将这些文件放在裸磁盘上。
&&&&3、OCR的结构
&&& Cluster的配置信息是在OCR中维护的。OCR依赖分布式的共享缓存结构用于优化关于Cluster知识库的查询。在Cluster中的每个节点都通过OCR进程访问OCR缓存在其内存中维护着一个副本。事实上在Cluster中,只有一个OCR进程对共享存储中的OCR进行读写操作。此进程负责刷新(refresh)其自己拥有的本地缓存以及Cluster中其他节点的OCR cache。对于涉及到Cluster知识库的访问,OCR客户端直接访问本地OCR进程。当客户端需要更新OCR时,它们将通过本地OCR进程与那个扮演读写OCR文件的进程进行交互。
&&& OCR客户端应用有:Oracle通用安装器(OUI)、SRVCTL、企业管理器(EM)、DBCA、DBUA、NetCA和虚拟网络协议助理(VIPCA)。此外,OCR维护管理着CRS内部中定义的各种应用程序的资源的依赖和状态信息,特别是Database、Instance、Services和节点的应用程序。
&&& 配置文件的名字是ocr.loc,并且配置文件变量是ocrconfig_loc。Cluster 知识库的位置是不受限于裸设备的。可以将OCR放置在由Cluster file system管理的共享存储设备上。
&&& note:OCR也可用于在ASM的单Instance中作为配置文件,每个节点有一个OCR。
&&& 4、RAC Database存储原理
&&& 与single-Instance Oracle的存储方式最主要的不同之处在于RAC存储必须将所有RAC中数据文件存放在共享设备中(裸设备或是Cluster文件系统)以便于访问相同Database的Instance能够共享。必须为每个Instance创建至少两个redo log组,并且所有的redo log组必须也存储在共享设备中,从而为了crash恢复的目的。每个Instance的在线redo log groups被称作一个Instance的在线redo 线程。
&&& 此外,必须为每个Instance创建一个共享的undo表空间用于Oracle推荐的undo自动管理特点。每个undo表空间必须是对所有Instance共享的,主要用于恢复的目的。
&&& 归档日志不能被存放在裸设备上,因为其命名是自动产生的,并且每个是不一致的。因此需要存储在一个文件系统中。如果使用Cluster file system(CFS),则可以在任何时间在任何node上访问这些归档文件。如果没有使用CFS,就不得不使其他Cluster成员在恢复时那些归档日志是可用的,例如通过网络文件系统(NFS)来实现。如果使用推荐的flash recovery area特性,则其必须被存储在共享目录下,以便于所有的Instance能够访问。(共享目录可以是一个ASM磁盘组,或是一个CFS)。
&&&&5、RAC和共享存储技术
&&& 存储是网&#26684;技术中的关键组成部分。传统上,存储都直接依附在每个Server(directly attached to each individual Server DAS)上。在过去的几年来,更灵活的存储出现并得到应用,主要是通过存储空间网络或是正规的以太网来实现访问。这些新的存储方式使得多个Servers访问相同的磁盘集合成为可能,在分布式环境中,可以获得简单的存取。
&&& storage area network(SAN)代表了数据存储技术在这一点的演进。传统上,C/S系统中,数据被存储在Server内部或是依附它的设备中。随后,进入了network attached storage(NAS)阶段,这使得存储设备与Server和直接连接它们的网络向分离。它在SAN遵循的原则进一步允许存储设备存在于各自的网络中,并直接通过高速的媒介进行交换。用户可以通过Server系统对存储设备的数据进行访问,Server 系统与本地网络(LAN)和SAN相互连接。
&&& 文件系统的选择是RAC的关键。传统的文件系统不支持多系统的并行挂载。因此,必须将文件存储在没有任何文件系统的裸卷标或是支持多系统并发访问的文件系统中。
&&& 因此,三个主要的方法用于RAC的共享存储有:
&&& *& 裸卷标:既是一些直接附加的裸设备,需要用于存储,并以block模式进程操作。
&&& *& Cluster file system:也需要以block模式进程存取。一个或多个Cluster file 系统可以被用于存储所有的RAC文件。
&&& *& 自动存储管理(ASM):对于Oracle Database files,ASM是一个轻便的、专用的、最佳化的Cluster file system。
&&& 6、Oracle Cluster file system
&&& Oracle Cluster file system(OCFS)是一个共享文件系统,专门为Oracle RAC设计。OCFS排除了Oracle Database files被连接到逻辑磁盘上的需要,并使得所有的节点共享一个ORACLE Home,而不需每个node在本地有一个副本。OCFS卷标可以横跨一个或多共享disks,用于冗余和性能的增强。
&&& 下面时可放入OCFS中的文件类表:
&&& *& Oracle software的安装文件:在10g中,此设置只在windows 2000中支持。说是后面的版本会提供在Linux中的支持,但我还没具体看。
&&& *& Oracle 文件(控制文件、数据文件、redo logs文件,bfiles等)
&&& *& 共享配置文件(spfile)
&&& *& 在Oracle运行期间,由Oracle创建的文件。
&&& *& voting和OCR文件
&&& Oracle Cluster file system对开发人员和用户时免费的。可从官方网站下载。
&&&&7、自动存储管理(ASM)
&&& 是10g的新特性。它提供了一个纵向的统一管理的文件系统和卷标管理器,专门用于建立Oracle Database 文件。ASM可以提供单个SMP机器的管理或是贯穿多个Oracle RAC的Cluster节点。
&&& ASM无需再手动调节I/O,会自动的分配 I/O 负载到所有的可用资源中,从而优化性能。通过允许增加Database大小而不需shutdown数据库来调节存储分配,来辅助DBA管理动态数据库环境。
&&& ASM可以维护数据的冗余备份,从而提高故障的容错。它也可以被安装到可靠的存储机制中。
&&& 8、选择RAW或CFS
&&& *& CFS的优点:对于RAC的安装和管理非常简单;对RAC使用Oracle managed files(OMF);single Oracle软件安装;在Oracle data files上可以自动扩展;当物理节点失败时,对归档日志的统一访问。
&&& *& 裸设备的使用:一般会用于CFS不可用或是不被Oracle支持的情况下;它提供了最好的性能,不需要在Oracle和磁盘之间的中间层;如果空间被耗尽,裸设备上的自动扩展将失败;ASM、逻辑存储管理器或是逻辑卷标管理其可以简化裸设备的工作,它们也允许加载空间到在线的裸设备上,可为裸设备创建名字,从而便于管理。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:133668次
积分:2951
积分:2951
排名:第4343名
原创:146篇
转载:97篇
评论:38条
(1)(14)(13)(16)(2)(2)(1)(4)(16)(17)(37)(8)(1)(6)(1)(3)(18)(13)(12)(22)(33)(6)}

我要回帖

更多关于 分布式计算 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信