oracleHA高可用性详解(二)

2015-07-24 10:58:01 · 作者: · 浏览: 9
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;

为了保证数据的充足性,多执行几次上面insert语句,由于磁盘空间限制,我在此执行了4次,共1203888条记录。

由以上信息可知用户连接到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> /

OBJECT_TYPE COUNT(*)

------------------------------------------------

EDITION 1

INDEX PARTITION 302

TABLESUBPARTITION 32

CONSUMER GROUP 25

SEQUENCE 229

TABLE 2936

INDEX 5266

SYNONYM 28152

VIEW 5186

FUNCTION 305

JAVA CLASS 23165

JAVA SOURCE 2

INDEXTYPE 9

CLUSTER 10

TYPE 2913

RESOURCE PLAN 10

JOB 14

eva lUATIONCONTEXT 15

45 rows selected.

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可以在创建数据库时创建,也可以在数据库创建之后修改;既可以通过配置向导也可以通过命令行方式配置。下面分别演示用DBCA和手工两种方式配置Service的过程。