1.单实例数据库和 RAC
![](https://i-blog.csdnimg.cn/blog_migrate/84dfeb177b3b3dbb0d5848558da2558a.jpeg)
单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。
对于RAC来说,和单实例一样,还是一份数据文件,都是相同的存储上面放着oracle的文件,但是是由三个实例共用同一份数据文件。这样的好处是在三个实例之间做了冗余,在上面三个实例当中任意两个坏了业务都可以链接到剩下的一个实例,都可以正常的工作。RAC提供了在实例级别的冗余。
RAC不能够解决在数据的安全,尽管有多个实例,但是只有一份数据文件,这样只要数据文件损坏了,那么整个数据库就损坏了。
2.什么是RAC
![](https://i-blog.csdnimg.cn/blog_migrate/e86ae26dd6e6341c81fc460b1c49d0f9.jpeg)
一般每个实例都放在不同的服务器上面,这样可以起到冗余作用。所有的数据库文件都放在共享存储上面,但是还有一些文件放在每个实例自己的本地的磁盘上面,比如参数文件,每一个实例都可以有自己的参数文件,这个参数文件既可以放在本地也可以放在共享存储上面,多个实例都使用同一个参数文件。
在RAC里面,最重要的就是实例和实例之间的交互,即使是分离的实例,但是读取的数据是相同的,RAC不是分布式的系统,因为它只有一个存储,分布式系统是指数据发布在不同的数据库上面,然后通过中间件来协调做查询。RAC还是一台数据库,多个实例。
3.RAC架构
![](https://i-blog.csdnimg.cn/blog_migrate/b61dce36563adbb7237793516d374771.jpeg)
对于RAC来说至少有两套物理上不同的网络,私有网络是专门用来实例之间的数据交互。如果私有网络,所有的数据都在一个网络下面,那么那么就会对数据造成影响,严重的影响RAC的性能了。实例之间数据之间传递使用私有网络和对外服务提供的网络之间是物理分开的。所以RAC至少有两套网络,一个是实例之间的数据的传递,另外一个是公有网络,是对外提供服务的,外面的业务是提供公有网络的IP链接到数据库的。
4.RAC如何容错的
![](https://i-blog.csdnimg.cn/blog_migrate/be9081777cfdfc4f3ad98420ab6d30a6.jpeg)
5.好处
- 实现负载均衡(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,
无需手动重新连接,这就是与连接时
故障转移的区别