1.单实例数据库和  RAC

ios rac 学习 rac机构怎么样_ios rac 学习

单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。
对于RAC来说,和单实例一样,还是一份数据文件,都是相同的存储上面放着oracle的文件,但是是由三个实例共用同一份数据文件。这样的好处是在三个实例之间做了冗余,在上面三个实例当中任意两个坏了业务都可以链接到剩下的一个实例,都可以正常的工作。RAC提供了在实例级别的冗余。
RAC不能够解决在数据的安全,尽管有多个实例,但是只有一份数据文件,这样只要数据文件损坏了,那么整个数据库就损坏了。

2.什么是RAC

ios rac 学习 rac机构怎么样_数据_02

一般每个实例都放在不同的服务器上面,这样可以起到冗余作用。所有的数据库文件都放在共享存储上面,但是还有一些文件放在每个实例自己的本地的磁盘上面,比如参数文件,每一个实例都可以有自己的参数文件,这个参数文件既可以放在本地也可以放在共享存储上面,多个实例都使用同一个参数文件。

在RAC里面,最重要的就是实例和实例之间的交互,即使是分离的实例,但是读取的数据是相同的,RAC不是分布式的系统,因为它只有一个存储,分布式系统是指数据发布在不同的数据库上面,然后通过中间件来协调做查询。RAC还是一台数据库,多个实例。

3.RAC架构

ios rac 学习 rac机构怎么样_数据_03

 对于RAC来说至少有两套物理上不同的网络,私有网络是专门用来实例之间的数据交互。如果私有网络,所有的数据都在一个网络下面,那么那么就会对数据造成影响,严重的影响RAC的性能了。实例之间数据之间传递使用私有网络和对外服务提供的网络之间是物理分开的。所以RAC至少有两套网络,一个是实例之间的数据的传递,另外一个是公有网络,是对外提供服务的,外面的业务是提供公有网络的IP链接到数据库的。

4.RAC如何容错的

ios rac 学习 rac机构怎么样_数据_04

 5.好处

  1. 实现负载均衡(Load Balance)是 Oracle RAC 最重要的特性之一,其功能是把负载平均分配

到集群中的各个节点,以提高系统的整体吞吐能力。通常情况下有两种方式来实现负载均衡,一


个是基于客户端连接的负载均衡,一个是基于服务器端监听将收集到的新的连接请求分配到连接


数较少实例上的实现方式。


客户端负载均衡是通过在客户端 tnsnames.ora 文件中设置参数 load_balance=on 来实现。


当设置 load_balance=on 时, Oracle Net 会从多个地址中随机地选择一个地址进行连接,


平衡各个监听上的负载,直到连接成功为止。当设置 load_balance=off 时, Oracle Net


会根据地址列表按顺序选择一个进行连接,直到连接成功为止。如果第一个 host 主机连接失败,


在有多个地址的情形下,接下来选择第二个地址连接,依此类推,直到连接成功为止。


注意,此连接方式仅根据地址列表随机选择,并不考虑到各个实例上当前真正连接数量的多少,


也即是没有考虑各个节点真实的连接负载情况。


      2.Oracle RAC 同时具备 HA(High Availiablity)和 LB(Load Balance)的特性。其高可用性的基础就是 Failover(故障转移)。它指的是集群中任何一个节点的故障都不会影响用户的 正常使用,连接到故障节点的用户都会被自动转移到正常节点,从用户的角度,不会感觉到这种切换。



Oracle RAC 的 Failover 可以分为 3 种模式: Client-Side Connect Time Failover



客户端连接时 failover 模式、 TAF(Transparent Application Failover) 透明应用



Failover 模式、 FCF(Fast Connect Failover) 快速连接 Failover 模式 .



1)客户端 TAF 方式实现了 Oracle 客户端到服务器的透明故障转移。



2) 在客户端 tnsnames.ora 中配置 FAILOVER_MODE 来实现基于客户端的 TAF 。



3) FAILOVER_MODE 中基于连接方式 (METHOD) 可以分为 BASIC 与 PRECONNECT 两种方式,



后者开销更大,延迟小,与前者相反。



4) FAILOVER_MODE 中 TYPE 可以分为 select 与 session 两种方式,两者所有未提交的事



务都会全部回滚, select 方式会 failover 查询, session 方式不会。 select 方式多



用在 OLAP 类型数据库,而 session 多用在 OLTP 类型数据库。



5) 一旦所在的实例发生故障,会自动进行 failover, 无需手动重新连接,这就是与连接时



故障转移的区别