官方文档地址 http://docs.oracle.com/cd/E11882_01/network.112/e41945/advcfg.htm#NETAG455

About Transparent Application Failover

  • TAF 是 client-side 特性,在一个数据库实例发生失败的情况下,允许客户端重新连接到存活的节点。服务器使用通知(Notifications)来触发客户端的 TAF callbacks
  • TAF 的配置方式:
    • 使用客户端(client-side )指定的 TNS 连接符
    • 使用服务器端(server-side)的 service 属性
  • 如果同时使用这两种方式,那么服务器端的 service 属性将取代客户端的设置。配置 TAF 时优先服务端的service 属性
  • TAF 有两种模式:Session Failover 和 Select Failover。Session Failover 可以重建丢失的连接和会话;Select Failover 可以继续执行一个未完成的查询
  • TAF 工作在以下的数据库配置中,以掩饰数据库故障:
    • Oracle RAC
    • Replicated systems
    • Standby databases
    • Single instance Oracle database

About FAILOVER_MODE Parameters

  • FAILOVER_MODE 参数包含在连接描述符的 CONNET_DATA 部分
  • FAILOVER_MODE 可以包含以下参数:
参数 描述
BACKUP 指定备份连接的网络服务名,当使用 preconnect 预建连接时指定该参数
DELAY 等待多久后,重新尝试连接,单位是秒;如果指定了 RETRIES,DELAY 默认是 1秒
如果注册了 callback 函数,该参数被忽略
METHOD 从主节点到备节点的失败切换:
basic:在发生 failover 时才建立连接
preconnect:预先建立连接。它提供了快速 failover,但是需要备份实例可以支持来自每个被支持实例的所有连接
RETRIES 在 failover 后尝试连接的次数。如果指定了 DELAY,RETRIES 默认值是 5
TYPE failover 的类型:
session:如果用户连接丢失,新的会话会被自动创建在;它不会尝试恢复 SELECT 操作
select:可以继续执行 SELECT 操作
none:默认值,不具备 failover 功能;它可以用来显式地阻止发生 failover

Implementing Transparent Application Failover

  • 注意:不要在 listener.ora 文件中的 SID_LIST_listener_name 部分设置 GLOBAL_DBNAME。静态配置的全局数据库名会禁用 TAF
  • 通过设置不同的 FAILOVER_MODE 参数可以配置不同方式的 TAF
  • Oracle 推荐以下三种方法:

TAF with Connect-Time Failover and Client Load Balancing

  • 使用 Connect-Time Failover 和 Client Load Balancing 配置 TAF
  • 在下面的例子中,Oracle Net 随机地连接到 sales1-server 或 sales2-server 上的一个协议地址。如果连接之后实例失败,TAF 会切换到另一个节点的监听,保留任何未完成的 SELECT 操作
sales.us.example.com=
(DESCRIPTION=
(LOAD_BALANCE=on)
(FAILOVER=on)
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales1-server)
(PORT=1521))
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales2-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic))))

TAF Retrying a Connection

  • 在设置 RETRIES 和 DELAY 参数的情况下,如果第一次尝试连接失败,TAF 也提供了自动重试连接的能力
  • 在下面的例子中,Oracle Net 尝试重新连接 sales1-server 的监听。如果 failover 连接失败,Oracle Net 会在尝试重连前等待 15 秒,总共尝试重连 20 次
sales.us.example.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales1-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
(RETRIES=20)
(DELAY=15))))

TAF Pre-establishing a Connection

  • 一个备份连接可以被预先建立。最初的和备份的连接可以被显式地指定
  • 在下面的示例中,客户端使用网络服务名 sales1.us.example.com 连接 sales1-server 的监听时,同时会预先连接到 sales2-server。如果连接之后 sales1-server 失败,Oracle Net 会切换到 sales2-server,保留任何未完成的 SELECT 操作。同样地, 使用网络服务名 sales2.us.example.com 连接 sales2-server 的监听时,同时会预先连接到 sales2-server
sales1.us.example.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales1-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(INSTANCE_NAME=sales1)
(FAILOVER_MODE=
(BACKUP=sales2.us.example.com)
(TYPE=select)
(METHOD=preconnect))))
sales2.us.example.com=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=sales2-server)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(INSTANCE_NAME=sales2)
(FAILOVER_MODE=
(BACKUP=sales1.us.example.com)
(TYPE=select)
(METHOD=preconnect))))

Verifying Transparent Application Failover

  • 可以通过查询 V$session 视图中的 FAILOVER_TYPE、FAILOVER_METHOD 和 FAILED_OVER 列,来验证 TAF 是否正确配置
  • 可以使用类似于下面的查询
SELECT MACHINE, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER, COUNT(*)
FROM V$SESSION
GROUP BY MACHINE, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER;
  • 在 failover 前的输出可能是下面这样
MACHINE              FAILOVER_TYPE FAILOVER_M FAI   COUNT(*)
-------------------- ------------- ---------- --- ----------
sales1 NONE NONE NO 11
sales2 SELECT PRECONNECT NO 1
  • 在 failover 后的输出可能是下面这样
MACHINE              FAILOVER_TYPE FAILOVER_M FAI   COUNT(*)
-------------------- ------------- ---------- --- ----------
sales2 NONE NONE NO 10
sales2 SELECT PRECONNECT YES 1

Transparent Application Failover 透明应用切换的更多相关文章

  1. Transparent HugePages(透明大页)

    Transparent HugePages(透明大页) 1. 介绍 从RedHat6, RedHat7, OL6, OL7 SLES11 and UEK2 kernels开始,透明大页默认是被开启的以 ...

  2. Oracle 10g R2 Transparent Data Encryption 透明数据加密

    Oracle 10g R2 Transparent Data Encryption 透明数据加密 本章介绍如何使用透明数据加密来保护Oracle数据库中的敏感数据,该功能使您可以加密数据库列并管理加密 ...

  3. css transparent属性_css 透明颜色transparent的使用

    在css中 transparent到底是什么意思呢? transparent 它代表着全透明黑色,即一个类似rgba(0,0,0,0)这样的值. 例如在css属性中定义:background:tran ...

  4. Oracle RAC Failover

    Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...

  5. Oracle RAC Failover 详解

    Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...

  6. RAC FAILover详解(转载)

    Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...

  7. 负载均衡和故障转换(Failover)的连接RAC方法

    TAF:Transparent Application Failover,透明的应用切换,即在切换的过程中,用户感知不到.可以实现会话的切换(无法实现事务的切换,即没有提交的事务会回滚),即在不断开连 ...

  8. oracle11g在没DNS情况下failover的配置方法

    1.Oracle 11g引入scan ip ,可在没有DNS的情况下,客户端连接RAC配置failover时,很多情况还是使用oracle10g方式.即在客户端tnsname.ora中配置failov ...

  9. 三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF

    三种 Failover 之 Client-Side Connect time Failover.Client-Side TAF.Service-Side TAF 理论背景 Oracle  RAC 同时 ...

随机推荐

  1. 介绍几个python的音频处理库

    一.eyeD3 直接在google上搜索python mp3 process ,推荐比较多的就是这个第三方库了.先来看看官方介绍吧. About eyeD3 is a Python tool for ...

  2. 原型(Prototype)模式

    原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是原型模式的用意.原型模式的结构 原型模式要求对象实现一个可以“克隆 ...

  3. memcache 启动 failed to start

    以为是 端口冲突,到注册表中直接改了memcache的注册表,还是启动不了.memcache运行不了,还能咋办,看防火墙有没有阻止程序运行呗 勾上,我的windows 上的memcache 就可以运行 ...

  4. vim - manual -个人笔记

    ##vim配置 ###normal > 输入命令:w 写入保存 > > 粘贴 :p(向下粘贴) P(大写向上粘贴) > > 复制 :yy 复制一行 > > 删 ...

  5. Day3-递归函数、高阶函数、匿名函数

    一.递归函数 定义:函数内部可以调用其它函数,如果调用自身,就叫递归. 递归特性: 1.必须有结束条件退出: >>> def calc(n): ... print(n) ... re ...

  6. C++构造函数虚函数例题

    虚函数: #include <iostream> class A { public: A ():m_iVal() { test(); } virtual void func() { std ...

  7. Fragment回调接口应用间分享数据

    package com.example.mydemo; import java.util.List; import android.app.Activity; import android.app.A ...

  8. Kotlin入门第二课:集合操作

    测试项目Github地址: KotlinForJava 前文传送: Kotlin入门第一课:从对比Java开始 初次尝试用Kotlin实现Android项目 1. 介绍 作为Kotlin入门的第二课, ...

  9. promise知识点汇总

    Promise对象被写进ES6的规范当中,提供的是另外一种更加友好的对于异步编程的解决方案,在这之前大多使用的是回调函数和事件来实现异步编程. 怎么来理解Promise对象呢?对于这个ES6新加入的小 ...

  10. ElasticSearch的Marvel更新license

    Marvel安装的时候需要申请一个license,否则只有30天的使用时间,到期后最多保存7天的监控数据,为了造成不必要的监控数据丢失,建议安装的同时注册一个lincense,方法如下: 1.     ...