Transparent Application Failover 透明应用切换
官方文档地址 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 透明应用切换的更多相关文章
- Transparent HugePages(透明大页)
Transparent HugePages(透明大页) 1. 介绍 从RedHat6, RedHat7, OL6, OL7 SLES11 and UEK2 kernels开始,透明大页默认是被开启的以 ...
- Oracle 10g R2 Transparent Data Encryption 透明数据加密
Oracle 10g R2 Transparent Data Encryption 透明数据加密 本章介绍如何使用透明数据加密来保护Oracle数据库中的敏感数据,该功能使您可以加密数据库列并管理加密 ...
- css transparent属性_css 透明颜色transparent的使用
在css中 transparent到底是什么意思呢? transparent 它代表着全透明黑色,即一个类似rgba(0,0,0,0)这样的值. 例如在css属性中定义:background:tran ...
- Oracle RAC Failover
Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...
- Oracle RAC Failover 详解
Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...
- RAC FAILover详解(转载)
Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...
- 负载均衡和故障转换(Failover)的连接RAC方法
TAF:Transparent Application Failover,透明的应用切换,即在切换的过程中,用户感知不到.可以实现会话的切换(无法实现事务的切换,即没有提交的事务会回滚),即在不断开连 ...
- oracle11g在没DNS情况下failover的配置方法
1.Oracle 11g引入scan ip ,可在没有DNS的情况下,客户端连接RAC配置failover时,很多情况还是使用oracle10g方式.即在客户端tnsname.ora中配置failov ...
- 三种 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 同时 ...
随机推荐
- Python安装mysqldb
1.根据Python版本和自己的系统下载mysqldb http://www.codegood.com/downloads
- JS中作用域
var scope = 'global'; var f = function() { console.log(scope); // 输出 undefined var scope = 'f'; } f( ...
- 设计模式的征途—6.建造者(Builder)模式
建造者模式又称为生成器模式,它是一种较为复杂.使用频率也相对较低的创建型模式.建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品.因为,没有人买车会只买一个方向盘或者轮胎,大 ...
- Linux中安装redis
第一部分:安装redis 1.希望将安装包下载到此目录 /home/local/src 安装过程指令 $ mkdir /home/local/redis $ cd /home/local/src ...
- Web测试到底是在测什么(资料合集)
开始今晚的主题之前 先来看一张图, 这是老徐16年10月份,线上Web主题分享时整理的大纲 图片略模糊 看得清就好 Web测试, 进行抽离拆分,基本上就如上一些内容. 不管是测什么系统,什么功能,基本 ...
- $>_<$
Hello word! 从jdk环境变量的配置,myeclipse的安装,tomcat的部署和使用,面向对象的编程思想,什么是java. 思维从模糊到清晰,一路摸索,不见泰山!
- NancyFx 2.0的开源框架的使用-Stateless(二)
继续上一篇Stateless的博文,在上一篇的博文的基础上稍微加点东西 接下来右键解决方案添加新项目,一样建一个空的Web项目 然后在StatelessDemoWeb项目里面添加Views文件夹,Sc ...
- JSP页面的静态包含和动态包含
JSP中有两种包含:静态包含:<%@include file="被包含页面"%>和动态包含:<jsp:include page="被包含页面" ...
- 【JAVAWEB学习笔记】04_JavaScript
晨读单词: onmouseover:鼠标移入 onmouseout:鼠标移出 attribute:属性 node:节点 document:文档 element:元素 textNode:文本节点 app ...
- 【JAVAWEB学习笔记】25_基础加强:类加载器、注解 @xxx和动态代理
基础加强 学习目标 案例-自定义单元测试@MyTest 案例-全局的编码的解决 一.类加载器 1.什么是类加载器,作用是什么? 类加载器就加载字节码文件(.class) 2.类加载器的种类 类加载器有 ...