`
wsql
  • 浏览: 11776508 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

oracle 11g RAC 的一些基本概念(一)

 
阅读更多

总的来说,oracle 11g r2 RAC提供了以下功能:

  1. 高可用:shared-everything 模式保证了单节点的故障不会停止服务,集群中的其他节点将快速接管
  2. 可扩展性:多节点分担负载,可以提供远超单机数据库能提供的处理能力。且增删节点可以在线完成,不需要停机
  3. 易用性:多个数据库可以加入到一个集群中
  4. 低成本:RAC可以部署在标准硬件上,硬件上节省的成本抵消了购买license的成本
Oracle 11g r2 还提供了一个叫RAC One Node的新功能。Oracle发现一些RAC的部署纯粹只是为了高可用,而虚拟化越来越多的被用户所使用,并成为了一个新的趋势。Oracle One Node建立在以下基础之上:Oracle Clusterware、Oracle ASM、Oracle database。

我们再来看一眼RAC的结构图


相比较单机数据库,RAC需要一个共享存储;一个私有网络来进行集群内部通讯;一个公有网络来连接应用和客户端;配置虚拟IP来提高节点故障时的连接速度,当一个节点出现故障,它的虚拟ip立即指向其他节点的ip上(若不配置vip,当一个节点发生故障时,新的连接将会发生等待,直到与该节点ip的通讯出现time out)。


Failover的连接配置


有两种连接方式可以实现数据库连接的failover

1. TAF(Transparent Application Failover)

让我们看一下官方文档。TAF让Oracle Net将一个失效的连接从故障点转移到另一个监听上,用户能使用这个新的连接来继续未完成的工作,这是一个client端的功能。
TAF可以配置为使用client端的(Transparent Network Substrate)TNS连接字符串来连接,或者使用server端的服务。如果两种方式同时使用,则使用server端的服务配置。
TAF可以工作在两种模式下:session failover和select failover。前者在failover时会重建失败的连接,后者则能够继续进程中未完成的查询(如果failover前一个session正在从一个游标中获取数据,则新的session将在相同的snapshot下重新运行select语句,并返回余下的行)。如果failover时,session执行了DML操作且未提交,则failover后,若不执行rollback回滚而执行新的操作,将会收到一条错误信息ORA-25402: transaction must roll back
TAF在dataguard中使用,可以自动进行failover

一个典型的使用了TAF的TNS连接串如下:
NEWSDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dyora)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)

failover_mode参数介绍
failover_mode参数 说明
BACKUP 备用连接的网络服务名。若使用了preconnect的连接方法,则需要指定这个参数
DELAY 连接重试的时间间隔(秒)。如果指定了RETRIES参数,若不指定该参数,默认为1秒。若注册了callback,该参数将被忽略
METHOD 设置failover方法。basic: failover时才尝试连接备用实例的监听;preconnect: 每次连接数据库时,都会在备用实例上也产生一个连接,以实现更快的切换
RETRIES failover后,尝试连接的次数。如果指定了DELAY参数,则RETRIES默认为5次。若注册了callback,则该参数将被忽略
TYPE OCI默认提供了3种类型:session: 若用户连接丢失,将在备用节点上重新创建;select: 除了重建连接外,将继续从打开的游标中获取数据,如果采用这种方式,普通select操作也将在客户端产生开销;none: 默认值,也可显示指定来禁用failover功能

2. FCF(Fast Connect Failover)

oracle11g提供了FCF方式连接数据库,它支持JDBC Thin和JDBC OCI驱动;与连接缓存(implicit connection cache)协同工作提供更高的连接性能和高可用;可以在应用代码中设置,无需另外配置
需要的条件:启用了隐含连接缓存,FCF需要与JDBC的连接缓存机制共同工作,为应用管理连接以确保高可用;应用使用服务名而非服务标识符来连接数据库;JDBC运行的节点上配置并启用了Oracle Notification Service (ONS);JDBC例程运行的java虚拟机必须包含oracle.ons.oraclehome并指向ORACLE_HOME
例子:
配置ONS
ods.setONSConfiguration("nodes=racnode1.example.com:4200,racnode2.example.com:4200");
启用FCF
// declare datasource
ods.setUrl(
"jdbc:oracle:oci:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)
(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service_name)))");
ods.setUser("scott");
ods.setConnectionCachingEnabled(true);
ods.setFastConnectionFailoverEnabled(true):
ctx.bind("myDS",ods);
ds=(OracleDataSource) ctx.lookup("MyDS");
try {
ds.getConnection(); // transparently creates and accesses cache
catch (SQLException SE {
}
}

看糊涂了?上面的java代码包含一个异常处理。工作过程如下:
1. 一个实例宕掉了,在缓存中留下一些过期连接
2. RAC产生一个事件,并将其发送给包含JDBC的java虚拟机
3. JVM中的后台线程找出所有受到该RAC事件影响的所有连接,通过sql异常(ORA-17008)通知它们关闭连接,并回滚事务
4. 连接接收到sql异常并重新执行失败的操作

FCF与TAF相比有如下不同:
1. FCF支持应用级别的连接重试,由应用来决定failover时如何处理,是重新执行,还是抛出异常;TAF只能在OCI/NET的层面进行重新连接
2. FCF与连接缓存很好地结合起来,让连接缓存管理器来管理缓存,失败的连接在缓存中会自动失效。而TAF在网络层面做预连接,当一个连接失效,连接缓存不能检测到
3. FCF基于Oracle RAC事件,可以快速为活跃/闲置的连接检测到故障
4. FCF通过实例的UP事件实现负载均衡,分配到在线的RAC实例中

oracle建议不要在一个应用中同时使用TAF和FCF


分享到:
评论

相关推荐

    Oracle 11g RAC 基本概念

    RAC 基本概念 重要概念

    Oracle 11g RAC Student Guide Volume 1

    Oracle 11g RAC 的学习指南 卷1,详细学习11g的rac概念、维护等。

    oracle rac 11g

    oracle集群概念、特点及管理,负载均衡等。

    [手工整理]208个Oracle安装文档,包含各个平台各个版本的单实例RAC以及DataGuard(1).xlsx

    10 ADG Linux+Oracle 11g+RAC+12cc+adg国内业界最详细生产系统下实施文档 11 ADG Linuxel6.5 RAC+DG11204bestpratice 12 ADG Linuxel6.5 RAC+DG11204脚本安装 13 ADG Oracle 10g DataGuard实施文档 14 ADG ...

    Oracle 10g RAC 管理手册

    在本课程中,您将: ...• 学习RAC 的主要概念 • 安装RAC 组件 • 在RAC 和ASM 环境中管理数据库实例 • 管理服务 • 备份和恢复RAC 数据库 • 监控和优化RAC 数据库的性能 • 管理Oracle Clusterware

    rac基本概念

    oracle_11g_RAC_的基本概念

    Oracle-RAC11gr2(11g-release-2)LINUX 安装指南中文版

    文中详细介绍了Oracle-RAC-11gr2部分新组件的相关概念和功能,以及在RHEL5上的详细安装过程

    Oracle Database 11g初学者指南--详细书签版

     ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中  ·主要内容——每章要介绍的具体内容列表  ·实践练习——演示如何应用在每章学到的关键技术  ·学习效果测试——对学习效果的快速自我评估 ...

    Oracle_Database_11g完全参考手册.part2/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    核心概念——Oracle Database 11g主题呈现在按逻辑组织的章节中 主要内容——每章要介绍的具体内容列表 实践练习——演示如何应用在每章学到的关键技术 学习效果测试——对学习效果的快速自我评估 注意——与所介绍...

    经典书籍:Oracle.10g应用服务器管理与网格计算

    此外,本书知识涵盖全面,逻辑层次清楚,图文并茂,紧跟现代计算机应用技术的步伐,是一本推介Oracle 10g与网格计算技术的优秀参考用书。本书适合于以下读者使用;数据据库技术的系统分析员、程序员和管理员,应用...

    Oracle_Database_11g完全参考手册.part3/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle数据库培训技术交流RAC技术培训

    白鳝老师做的培训,主要讲了10GRAC,11G也有点。有一些概念还是讲的比较透彻的,例如缓冲区融合。

    ORACLE数据库管理之道part1/2

    《Oracle数据库管理之道》以Oracle数据库高阶技术为主,版本跨越9i\10g\11g,详细讲解了各种重要概念以及相关知识点,使得读者从新的层面和角度理解Oracle技术内涵,其中原理架构的讲解更侧重数据库管理和优化的内容...

    oracle概念手册中文版(10gR2)

    服务能力虚拟化。Oracle 实时应用集群(RAC,Oracle Real Application Clusters)可以使一个数据库运行在网格中多个集群...(Oracle 10g Release 2,Oracle 10g R2)还增加了基于策略来平衡RAC 实例之间连接的功能。

    Oracle数据库管理之道part2/2

    《Oracle数据库管理之道》以Oracle数据库高阶技术为主,版本跨越9i\10g\11g,详细讲解了各种重要概念以及相关知识点,使得读者从新的层面和角度理解Oracle技术内涵,其中原理架构的讲解更侧重数据库管理和优化的内容...

Global site tag (gtag.js) - Google Analytics