Oracle 12C RAC环境, thin连接字符串可以用 正斜杠+服务名,@后面不需要加 //
jdbc:oracle:thin:@<host>:1521/<service_name>
不知道其他版本可以不,欢迎告知
Oracle RAC
Oracle RAC主要支持Oracle9i、10g、11g,12C版本
- RAC和单实例,都只有一份数据文件。
- RAC是多个实例运行在多个服务器上,共用同一份数据文件。
- 数据文件放在共享存储上, 所有实例都可以访问
- 实例间通过内网交互, 对外提供公网访问 (用同一个网络的话会严重的影响RAC的性能)
每一个节点的instance都有自己的SGA, 但是在SGA里面的数据块都是需要相互传递的。
每一个节点的instance都有自己的background process
每一个节点的instance都有自己的redo logs
每一个节点的instance都有自己的undo表空间
Private IP
私网IP/心跳IP, 节点和节点之间的通信绝大部分都是要通过私网来实现的
- 节点间的网络心跳
- 缓存融合(Cache Fusion)造成的实例之间的数据传输
Public IP
公网IP,它是网卡上的真实IP。
Oracle通过Public IP对外提供网络服务。
多节点RAC环境,需要在tnsnames.ora文件中写入对应多个节点的Public IP、端口号以及通信协议。
- 问题
如果没有开启负载均衡功能, 当客户端连接的Public IP主机故障或关机,Oracle会等待一个网络超时,然后继续连接其他的Public IP
网络超时会影响用户体验。在Oracle 10g RAC的 VIP(Virtual IP)解决了这个问题
Virtual IP(VIP)
VIP是Oracle 10g RAC引入的,称为虚拟IP。
VIP是在Public IP所在的网卡上 由Oracle集群软件虚拟出来的一个IP,需要和Public IP设置在同一个子网网段中。
Oracle集群软件安装之前只需定义好(/etc/hosts文件)即可,而无需事先配置。客户端tnsnames.ora文件中host选项不再需要配置Public IP而选择配置VIP,
-
作用
- 在正常情况下,VIP和Public IP的功能是一模一样的。后台进程PMON对每个节点的VIP所在的监听器注册实例信息,本地监听器中会看到两个地址host,一个是Public IP,一个是VIP。
- 当节点故障时,Oracle集群软件会把VIP自动飘逸到其它节点上,但是本地监听器却没有飘逸到其它节点上。
这样的好处是在双节点RAC架构中当第一个节点故障时,第二个节点会有两个VIP,
客户端连接第一个VIP失败后会立即连接第二个VIP对应的实例,整个切换过程是非常短暂的,用户完全感受不到RAC架构中有节点故障。 -
问题
用户可以知道整个RAC架构是由多少个节点组成
所以Oracle 11g RAC中推出了SCAN IP的新概念,可以实现对用户连接的透明性,用户不再需要知道整个RAC架构中是由多少个节点组成的。
SCAN IP
- 从Oracle 11gR2 RAC开始引入SCAN(Single Client Access Name,集群的单客户端访问名称)IP的概念
相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP LISTENER。在客户端的tnsnames.ora配置文件中,只需要配置SCAN IP
然后客户端通过SCAN IP、SCAN IP LISTENER来负载均衡地连接到RAC数据库。
SCAN提供一个域名来访问RAC,域名可以解析1个到3个(最多3个)SCAN IP,可以通过DNS、GNS或/etc/hosts文件来解析实现。需要注意的是,SCAN IP、VIP和Public IP必须属于同一子网。
- 优点
当后台RAC数据库添加、删除节点时,客户端配置信息无需修改。
RAC作用
所以提供了实例级别的冗余。在上面三个实例当中任意两个坏了业务都可以链接到剩下的一个实例,都可以正常的工作。
缺点
RAC不能够解决数据的安全问题,因为只有一份数据文件,只要数据文件损坏了,那么整个数据库就损坏了。
RAC容错
搭建案例
- https://mp.weixin.qq.com/s/C8k1jY0FgtaB2IJybBHj8A