WINDOWS2008R2 64位系统下的ORACLE12C 的HA环境虚拟机下载

本博主安装与配置好的WINDOWS2008R2 64位系统下的ORACLE12C 的HA环境虚拟机下载,下载地址:链接:https://pan.baidu.com/s/1xnDcry5kC9eJ8IcujkrhFA
提取码:n84t 下载后,解压后,用Vmware workstation打开,即可以直接使用.

一、HA
FAILOVER,Oracle RAC的高可用性的技术基础是Failover,就是指集群中的热河一个节点的故障都不会影响到用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户高手而言感觉不到这种切换,这个功能在Oracle中被称作Failover(故障转移)。

Oracle RAC的Failover可以细分为3中,分别是:

(1)  Client-Side Connect time Failover;

(2)  TAF;

(3)  Server-side TAF;

注意:

不要再listener.ora中设置GLOBAL_DB_NAME,因为这个参数会禁用Connect-time Failover和TransparentApplication Failover。

Client-Side Connect time Failover
Client-Side Connect timeFailover的含义是:如果客户端tnsname中配置了多个地址,用户发起请求时,会先尝试连接地址表中的第一个地址,如果这个连接尝试失败,则会继续尝试使用第二个地址,直至连接成功或者遍历了所有的地址。

这种Failover的特点从他的名称中“connect time”就表达的很清楚了,只在建立连接的那一时刻起作用。也就是说这种Failover方式只在发起连接时采取感知节点故障,如果发现节点没有响应,则自动尝试地址列表的下一个地址。一旦连接建立以后,节点出现故障都不会做处理,从客户端的表现来看就是断开,用户程序必须重新建立连接。

启用这种Failover的方法就是在客户端的tnsnames.ora中添加FAILOVER=ON条目,这个参数默认就是ON,所以即使不添加这个条目,客户端也会获得这种Failover能力。

TAF(Transparent Apllication Failover)
从上文对Client-Side Connecttime Failover特点的分析可以看出,这种failover的意义有限。下载大部分流行的应用系统(比如WebLogic,JBOSS)都是启动时就建立若干到数据库的长连接,在应用程序整个生命周期内重用这些连接。Client-Side Connect Time Failover的工作方式是它对应用程序的可用性没有极大地帮助。

从8.1.5版本Oracle引入了新的Failover机制TAF.所谓TAF,就是连接建立以后,应用程序运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他的健康实例上。对于应用程序而言,这个千亿过程透明、不需要用户的介入,当然这种透明也是有引号的,因为用户的未提交事务会回滚。相对于Client-Side Connect Time Failover的用户程序被中断、抛出连接错误、用户必须中期应用程序,TAF这种方式在提高应用程序HA能力上无疑是前进了一大步。

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

FRAC =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = frac1-vip)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = frac2-vip)(PORT = 1521))

(LOAD_BALANCE=YES)

(

CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=FRAC)

(

FAILOVER_MODE=

(TYPE=session)

(METHOD=basic)

(RETRIES=180)

(DELAY=5)

)

)

)

本博主安装与配置好的WINDOWS2008R2 64位系统下的ORACLE12C 的HA环境虚拟机下载,下载地址:链接:https://pan.baidu.com/s/1xnDcry5kC9eJ8IcujkrhFA
提取码:n84t 下载后,解压后,用Vmware workstation打开,即可以直接使用.

(1)  METHOD选项用于定义何时创建到其他实例的连接,有BASIC和PERCONNECT两个选项值。

a. BASIC是指在感知到节点故障时才创建到其他实例的连接。

b. PERCONNECT是在最初建立连接时就同时建立到所有实例的连接,当发生故障时,立刻就可以切换到其他链路上。

两种方法的不同很容易比较。BASIC方式在Faiover时会有时间言辞,PERCONNECT方式虽然没有时间言辞,但是再建立多个冗余两节会消耗更多的资源,两者就是用时间换资源和资源换时间的区别。

(2)  Type选项用于定于发生故障时对完成的SQL语句如何处理,其有两种类型:session和select。

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

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

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

(3)  DELAY和RETRIES这两个参数和简单,代表着重试时间间隔和重试次数。
Failover(TAF)的测试借助于前面监听和tnsnames的配置,而在11G R2没有引入之前出现故障用的是直接用集群的vip“漂”进行故障转移,而在11G R2以后,引入了一个新的ip,即SCAN(SingleClient Access Name)IP,Scan是一个域名,可以解析1到3个scan ip,客户端可以通过SCAN名解析来访问数据库,其好处就是添加和删除节点时不需要再有额外的客户端维护,大大减少了维护方面的繁琐工作。

在集群环境中,我们配置的客户端是以scan ip的方式进行配置的。当我们某个用户在外面连接进来的时候,集群会自动的根据负载把该会话连接到一个特定的实例,如果该会话正在select一个表,还未完成,该实例宕机了,oracle会自动将故障节点的失误切换到另一个实例中执行,这样的切换对于用户来说是透明的。用户不会感觉到异常,所执行操作也将返回正常的结果,这个也是RAC集群的高可用性所在。

以下是在session模式做的网络failover测试;

首先用户用客户端服务进行连接:

[oracle@frac1admin]$ sqlplus scott/oracle@frac

SQL*Plus: Release11.2.0.3.0 Production on Wed Apr 16 01:55:37 2014

Copyright (c) 1982,2011, Oracle.  All rights reserved.

Connected to:

Oracle Database 11gEnterprise Edition Release 11.2.0.3.0 – 64bit Production

With thePartitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and RealApplication Testing options

SQL> showparameter instance_name

NAME                                 TYPE                   VALUE

———————————————————- ——————————

instance_name                        string                 FRAC2
SQL> create tablebig_a as select * from dba_objects;
SQL>insert intobig_a select * from big_a;

本博主安装与配置好的WINDOWS2008R2 64位系统下的ORACLE12C 的HA环境虚拟机下载,下载地址:链接:https://pan.baidu.com/s/1xnDcry5kC9eJ8IcujkrhFA
提取码:n84t 下载后,解压后,用Vmware workstation打开,即可以直接使用.
由以上信息可知用户连接到frac2实例,此时可以执行一些DML操作:

SQL> selectOBJECT_TYPE,count(*) from big_a group by object_type;

在查询未完成之前,把frac2实例进行宕机,会返回如下错误:

SQL> shutdownabort;

ORACLE instance shutdown.

SQL> selectOBJECT_TYPE,count(*) from dba_objects group by object_type;

selectOBJECT_TYPE,count(*) from dba_objects group by object_type*

ERROR at line 1:

ORA-25408: can notsafely replay call

再次查看的是时候发现已经把会话自动切换到frac1实例:

SQL> showparameter instance_name;

NAME                                 TYPE                                     VALUE

—————————————————————————- ——

instance_name                        string                                   FRAC1

SQL> !hostname

frac1

Server-Side TAF
第三种方式是Server-Side TAF,但从名字上就可以猜出这种方式和之前的TAF有一定的关系。事实上也是这样,可以把Server-Side TAF看做是TAF的一个变种。首先Server-Side TAF也是TAF,所有TAF的特点他都具有;其次,这种TAF是在服务器上配置,而不像TAF是在客户端配置的。

前面介绍的Client-Side TAF,配置过程需要修改客户端tnsnames.ora文件,如果有很多客户端使用这个数据库,那么每次微小的参数调整都要把书友计算机更改一遍,即低效又易出错。而Server-Side TAF通过结合Service,在数据库里保存FAIL_MODE的配置,把所有的TAF配置保存在数据字典里,从而省去了客户端的配置工作,现在客户端的TNS文件就不需要任何TAF的配置选项。

从配置参数而言,Service-Side TAF相比多了一个Instance Role(实力角色)的概念。所谓实力角色,就是当有多个Instance参与一个Service时,可以配置有限使用哪一个Instance为用户提供服务。用户总共有两种可选角色。

a.    PREFERRED:首选实例,会优先选择拥有这个角色的实例提供服务。

b.    AVILABLE:后备实例,用户会优先连接PREFERRD的Instance,当PREFERRED的Instance不可用时,才会被转移到AVILABLE的实例上。
要想使用Server-Side TAF必须配置Server。Server可以在创建数据库时创建,也可以在数据库创建之后修改;既可以通过配置向导也可以通过命令行方式配置。
TAF是的Oracle的会话能够自动重新连接,需要说明的是,这个能力是基于OCI的,是OCI的一个功能,JDBC Thin Driver无效,因为这种驱动不是构建在OCI库上的。

虽然这个功能发起于RAC,但TAF并不局限于RAC,单实例、DG环境都可以享受这个好处。Oralce声称其TAF能够保证用户会话自动的转移到另一个实例上。这一点确实是真的,但是是有水分的。为了深入理解TAF的能力,我们接下来做一个更精细的实验。

本博主安装与配置好的WINDOWS2008R2 64位系统下的ORACLE12C 的HA环境虚拟机下载,下载地址:链接:https://pan.baidu.com/s/1xnDcry5kC9eJ8IcujkrhFA
提取码:n84t 下载后,解压后,用Vmware workstation打开,即可以直接使用.

1.  TAF和事务

在RAC环境下,可以有三种方式把一个用户会话迁移到另一个实例上,包括altersystem disconnect from session、shutdown、dbms_service包,这三种方式的后台机制和效果其实都是一致的,这三种方法可以把一个会话透明的或者说优雅的从一个实例迁移到另一个实例,对于这个会话来说,甚至感觉不到这种感觉迁移的发生。我们这个实验就用alter system的方法进行,这个命令的语法如下:

Altersystem disconnect session [post_transaction | immediate];

这个命令有两个选项,分别含义如下:

Post_transaction:意思是在事务提交之后再断开已有连接;

Immediate: 意思是立即断开连接;

Oracle cluster HA框架
术语介绍
(1)  Resource(资源)

资源需要由CRS管理的实体叫做Resource。一般而言是指一个火一组进程。

(2)  Resource Dependency(资源依赖性)

不同资源之间会有依赖关系,比如使用ASM作为存储的数据库而言,数据库实例就依赖与ASM实例。这种依赖关系体现在ASM实例必须先于数据库实例启动,必须等到数据库实例关闭之后才能关闭。而Resource Dependency就是用来说明这种关系的,通过REQUIRED_RESOURCES参数定义。

(3)  Application Profile(应用描述文件)

Application Profile是一个文件,用来告诉CRS应该如何管理应用程序的。这个文件通过“属性=值“的格式来描述应用程序的属性,比如资源脚本、资源依赖性、资源检察频率等。在使用Oraclecluster HA时,第一步就是创建这个文件,但这个文件又是一个过渡文件,文件的内容最后要注册到OCR中。

 

(4)  Action Program

Action Program是一个可执行文件,可以使二进制文件、更多的是SHELL脚本。Oracle Cluster HA架构就是通过这个脚本来完成启动、关闭、检查、转移资源工作的。这个脚本必须要能够接受处理start、stop、check这三个参数。

(5)  OCR

在配置第三方应用的HA集群时,Application Profile的内容最后要注册到OCR中。Oracle Cluster住工作时是从OCR而不是Application Profile读取配置内容的。

本博主安装与配置好的WINDOWS2008R2 64位系统下的ORACLE12C 的HA环境虚拟机下载,下载地址:链接:https://pan.baidu.com/s/1xnDcry5kC9eJ8IcujkrhFA
提取码:n84t 下载后,解压后,用Vmware workstation打开,即可以直接使用.

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营