当前位置:   article > 正文

oracle rac 接管,Oracle RAC 环境下的连接管理

oracle 客户端连接oracle rac

首先来介绍 TAF。TAF 有如下一些知识点需要我们注意:

1、它可以在 client 端的 tnsnames.ora 中的连接串里定义,也可以在 server 端的 service 中定义,只不过 service 端的设置会取代(override)客户端 tnsnames.ora 中的设置:

客户端可以这样设置 TAF:(DESCRIPTION =

(FAILOVER=ON)

(ADDRESS = (PROTOCOL = TCP)(HOST = MySCAN)(PORT = 1521))

(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Email)

(FAILOVER_MODE= (TYPE=select)(METHOD=basic)(RETRIES=180)(DELAY=5)))

Server 端可以这样设置 TAF:

srvctl modify service -d RAC11g -s Email -q TRUE -P BASIC -e SELECT -z 180 -w 5 -j LONG 具体各个参数的含义可参见如下注释:Usage: srvctl modify service -d -s [-c {UNIFORM |

SINGLETON}] [-P {BASIC|PRECONNECT|NONE}] [-l

[PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]] [-y

{AUTOMATIC | MANUAL}][-q {true|false}] [-x {true|false}] [-j {SHORT|LONG}] [-B

{NONE|SERVICE_TIME|THROUGHPUT}] [-e {NONE|SESSION|SELECT}] [-m

{NONE|BASIC}] [-z ] [-w ]

-d Unique name for the database

-s Service name

-c {UNIFORM | SINGLETON} Service runs on every active server in the server

pool hosting this service (UNIFORM) or just one server (SINGLETON)

-P {NONE | BASIC | PRECONNECT} TAF policy specification

-l Role of the service (primary, physical_standby,

logical_standby, snapshot_standby)

-y Management policy for the service (AUTOMATIC or MANUAL)

-e Failover type (NONE, SESSION, or SELECT)

-m Failover method (NONE or BASIC)

-w Failover delay

-z Failover retries

-j Connection Load Balancing Goal (SHORT or LONG). Default is LONG.

-B Runtime Load Balancing Goal (SERVICE_TIME,

THROUGHPUT, or NONE)

-x Distributed Transaction Processing (TRUE or FALSE)

-q AQ HA notifications

(TRUE or FALSE)

-h Print usage

2、当 TAF 的TYPE 设置为 select 的时候,单纯 select 操作(不包括 select … for update)可以做到“断点续传”,即单纯的 select 操作在利用 TAF 实现 Failover 后是可以从中断的地方继续往下执行的;3、TAF 对 DML 操作不能做到“断点续传”,即如果一个 transaction 在使用 TAF 实现 Failover 后,该 transaction 不能从中断的地方继续执行,需要再次从头开始执行;4、TAF 仅对使用 OCI 连接的客户端和连接池有效,这里的 OCI 连接可以是在 OCI 连接上的封装,比如 JDBC-OCI driver 就支持 TAF,但 JDBC thin driver 就不支持 TAF(因为 JDBC thin driver 不是基于 OCI 的)。

接下来,在介绍 FCF(Fast Connection Failover)之前,我们必须要先介绍 FAN(Fast Application Notification)。

FAN 是 Oracle RAC 里的一种消息主动通知机制。当 RAC 里出现 service down/up,instance down/up,节点负载变化时,Oracle 数据库都能通过 FAN events 将这些信息发布出去,订阅这些 FAN events 的客户端在第一时间收到这些 FAN events 后就能做出相应的动作来响应这些 FAN events。

FAN events 分为两种,第一种是 FAN HA events,第二种是 LBA events,这里的 LBA 是指 Load Balancing Advisory。

当 RAC 里出现 service down/up、instance down/up 时就会触发 FAN HA events。FAN HA events 的示例如下所示:Event 1: FAN event type: instance

Properties: version=1.0 service=PROD database=PROD instance=PROD1 host=node1 status=down

Event 2: FAN event type: service_member

Properties: version=1.0 service=ERP database=PROD instance=PROD1 host=node1 status=down

Event 3: FAN event type: service_member

Properties: version=1.0 service=ERP database=PROD instance=PROD3 host=node3 status=up

RAC 里节点的负载变化后也会产生 LBA events,LBA events 的示例如下所示:Event 4: FAN-event type: service_metrics

Properties: version=2.0 service=ERP database=PROD instance=PROD1 percent=70

service_quality=GOOD instance=PROD2 percent=30 service_quality=GOOD

Event 5 :FAN-event type: service_metrics

Properties: version=2.0 service=CRM database=PROD instance=PROD2 percent=30

service_quality=GOOD instance=PROD3 percent=70 service_quality=GOOD

上述 FAN events 可能会通过多种渠道传播出去,这些渠道包括 ONS(Oracle Notification Service),AQ(Advanced Queue),PMON 等。下面是关于 FAN events 架构和传播途径的两张图,它们就直观的说明了 FAN events 的传播途径:

c317769485f12930e838613e03457eea.png

25c813b3484732fb0584ab02150124de.png

订阅 FAN HA events 的客户端包括:JDBC Implicit Connection Cache, OCI, ODP.NET Connection Pools, Listener, Server Side Callouts 等;订阅 LBA events 的客户端包括:JDBC Implicit Connection Cache, ODP.NET Connection Pools, Listener,OCI Session Pools 等;0b1331709591d260c1c78e86d0c51c18.png

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号