课课家教育平台欢迎各位阅读本篇文章哦,本文主要讲的是Oracle RAC环境应用连续性。统企业比如银行业和电信业的数据库大多采用Oracle rac+dataguard的高可用架构,在rac项目实施过程中,由于业务连续性的苛刻要求,高可用的实施和测试工作显得尤为重要。
Oracle在新版本12cR2的rac官方文档里单独列了一章叫Ensuring application Continuity,重视程度可见一斑。在以前的Oracle10g以及11g的版本中,client为实现RAC failover(故障转移)特性,各类应用app以及db需要作各种配置调整工作,随着Oracle的12cR2新版本的到来,这些配置步骤变得更简化。
下面简要总结Oracle11gR2环境下的failover配置。
首先根据是否使用了事先已经存在的连接(如连接池中的连接)将客户端的连接分为Connect Time Connection Failover和Runtime Connection Failover,runtime前缀指连接已经存在的情况,比如使用了连接池。
1、Connect Time Connection Failover
客户端的tnsnames.ora中配置scan ip和service就可以实现连接数据库时的Failover;
2、Runtime Connection Failover
Oracle通过两种手段来实现Runtime Connection Failover,分别为TAF(Transparent Application Failover)和 FCF(Fast Connection Failover)。
1、什么是cluster
一个cluster是由两个或是多个独立的、通过网络连接的servers组成的。几个硬件供应商多年以来提供了Cluster性能的各种需求。一些Clusters仅仅为了提供高可用性的,在当前活动的node发生故障时转移到次节点node。另一些是为了提供分布式的连接、工作的可扩展性。另一个Cluster的共同特点是,对于一个应用程序,它可以看做是一个单独的server。同样,管理几个servers应该尽可能像管理一个server一样简单。Cluster管理器软件提供了这种功能。
如果是single server的nodes,文件必须存储在其各自node能访问的位置。存在有几个不同拓扑结构来解决数据访问的问题,这主要依赖于Cluster设计的主要目标。
相互连接时一个物理的网络连接,作为每个Cluster节点直接的交互通信。
简而言之,一个Cluster就是一组独立的servers,它们共同协作,组成一个single system。
2、什么是Oracle real Application Cluster(RAC)
RAC是一个软件可以使你通过运行多个依赖相同Database的Instance,使用Cluster硬件。数据库files被存放在物理或是逻辑上连接每个节点的磁盘上。以便于每个活动的Instance都可以对files进行读写操作。
RAC软件管理着数据的访问。所以更改操作在Instances之间是被相互协调的,并且每个Instance看到的信息和数据镜像都是一致的。
通过RAC结构,可以获得冗余,从而使得即使在一个系统crash或是不可访问时,应用程序也可通过其他Instance访问Database。
3、为啥使用RAC
RAC可以高度利用标准的Cluster,降低模块servers成本。
RAC自动的提供了服务的工作量管理。应用程序的服务可以被分组或分类,组成商业组件完成应用工作任务。RAC中的服务可以是持续的、不间断的Database操作,并为多Instance上的多个服务提供支持。可以设计services到一个或多个Instance上运行,并且交替Instances可以用于备份Instances。如果主Instance失败,Oracle会将services从失败的Instance节点移动到活动的可替代的Instance上。Oracle也会自动的通过连接进行数据装载的平衡。
RAC利用多个廉价的computers共同提供Database的服务,就像一个大的computer一样,服务于只有大规模SMP才能提供的各种应用。
RAC是基于共享磁盘结构的,在需求上可以增加或缩减,而不需要人为的在Cluster中进行数据的分隔。并且RAC可以简单的增加、移出Cluster中的servers。 这样的数据和上面两种类别都不一样,它是结构化的数据,但是结构变化很大。因为我们要了解数据的细节所以不能将数据简单的组织成一个文件按照非结构化数据处理,由于结构变化很大也不能够简单的建立一个表和他对应。本文主要讨论针对半结构化数据存储常用的两种方式。先举一个半结构化的数据的例子,比如存储员工的简历。不像员工基本信息那样一致每个员工的简历大不相同。有的员工的简历很简单,比如只包括教育情况;有的员工的简历却很复杂,比如包括工作情况、婚姻情况、出入境情况、户口迁移情况、党籍情况、技术技能等等。还有可能有一些我们没有预料的信息。通常我们要完整的保存这些信息并不是很容易的,因为我们不会希望系统中的表的结构在系统的运行期间进行变更。
首先是TAF:
它可以在 client 端的tnsnames.ora中的连接串里定义,也可以在 server 端的 service 中定 义。TAF 仅对使用 OCI 连接的客户端和连接池有效,这里的 OCI 连接可以是在 OCI 连接上的封装,比如 JDBC-OCI driver 就支持 TAF,但 JDBC thin driver 就不支持 TAF(因为 JDBC thin driver 不是基于 OCI 的)。
其次是FCF:
Fast Connection Failover,它实际上是客户端通过订阅 FAN HA events 来实现的。
因为 JDBC thin 连接不是基于 OCI 的,所以这种情况下的 Runtime Connection Failover 不能使用 TAF,只能用 FCF。
如果想让应用app具备TAF属性,可进行简单app改造:首先在app的client环境安装Oracle客户端程序,然后将jdbc thin连接调整为jdbc oci的连接方式。
在Oracle 12c R2的版本中,failover可基于事务,且replay DML语句,相对于11g基于会话,failover功能又大大提升了。
1)可扩展性的层次:主要有四个层次
* hardware 的可扩展性:相互连接性是它的关键,这一般依赖于较高的带宽和较低的延迟。
* OS的可扩展性:在OS中,同步方法可以决定系统的可扩展性。在一些情况下,硬件的潜在可扩展性会因为OS无力并发维持请求的多个资源而被丢失。
* Database管理系统的可扩展性:在并发结构中的一个关键因素是并发是由内部影响的还是外部进程影响的。此问题的答案影响了同步的机制。
* 应用层次上的可扩展性:应用程序必须被明确的设计为可扩展的。当系统中如果多数情况下,每个session都在更新相同的data,则可能产生瓶颈。这不仅是指RAC,对于single-instance系统也是一样。
需要明确的是,如果任何一个层次没有达到可扩展性,不管其他层次可扩展性多强,并发的Cluster进程都可能失败。可扩展性不足的典型原因是共享资源的访问。这使得并发的操作在此瓶颈上序列化执行。这不仅仅是RAC中的局限,而是所有结构中的局限性。
小结:相信最后大家阅读完毕本篇文章,肯定学到了不少知识吧?其实大家私下还得多多自学,当然如果大家还想了解更多方面的详细内容的话呢,不妨关注课课家教育平台,在这个学习知识的天堂中,您肯定会有意想不到的收获的!