oracle failover mode,Oracle RAC FailOver配置

Oracle RAC FailOver配置

Oracle RAC主要为数据库的应用提供了HA(High Available)的环境,HA体现在负载均衡(loadbalance)和容错(failover)两个方面。

Oracle RAC 的Failover 可以分为2种:

1. TAF(Client_side)

2. Service-Side TAF

一. TAF(Transparent Application Failover)

参考:

10g & 11g Configuration of TAF(Transparent Application Failover) and Load Balancing [ID 453293.1]

所谓TAF,就是连接建立以后,应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他的健康实例上。对于应用程序而言,这个迁移过程是透明的,不需要用户的介入,当然,这种透明要是有引导的,因为用户的未提交事务会回滚。 相对与Client-Side Connect Time Failover的用户程序中断,抛出连接错误,用户必须重启应用程序,TAF 这种方式在提高HA上有了很大的进步。

TAF 的配置也很简单,只需要在客户端的tnsnames.ora中添加FAILOVER_MODE配置项。这个条目有4个子项目需要定义。

1. METHOD: 用户定义何时创建到其实例的连接,有BASIC 和 PRECONNECT 两种可选值。

BASIC: 是指在感知到节点故障时才创建到其他实例的连接。(时间换资源)

PRECONNECT: 是在最初建立连接时就同时建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。(资源换时间)

两种方法比较: BASIC方式在Failover时会有时间延迟,PRECONNECT方式虽然没有时间延迟,但是建立多个冗余连接会消耗更多资源,两者就是是用时间换资源和用资源换时间的区别。

2. TYPE: 用于定义发生故障时对完成的SQL 语句如何处理,其中有2种类型:session 和select.

这2种方式对于未提交的事务都会自动回滚,区别在于对select 语句的处理,对于select,用户正在执行的select语句会被转移到新的实例上,在新的节点上继续返回后续结果集,而已经返回的记录集则抛弃。

假设用户正在节点1上执行查询,整个结果集共有1000条记录,现在已从节点1上返回100条记录,这时节点1宕机,用户连接被转移到节点2上,如果是session模式,则需要重新执行查询语句;如果是select方式,会从节点2上继续返回剩下的900条记录,而已经从节点1返回的100条记录不会重复返回给用户,对于用户而言,感受不到这种切换。

显然为了实现select 方式,Oracle 必须为每个session保存更多的内容,包括游标,用户上下文等,需要更多的资源也是用资源换时间的方案。

3. DELAY 和 RETRIES: 这2个参数分别代表重试间隔时间和重试次数

案例1:

tnsnames.ora: (METHOD = basic)PROD =

(DESCRIPTION =

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

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

(LOAD_BALANCE = yes)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = prod)

(FAILOVER_MODE =

(TYPE = session)

(METHOD = basic)

(RETRIES = 180)

(DELAY = 5)

)

)

<

你可能感兴趣的:(oracle,failover,mode)