机器配置:
机器名称
RAC1
RAC2
BOSS
一.客户端连接时故障转移(client-side connect time failover)
在Tnsnames.ora中设置failover=on(failover=on是默认选项),用户首先选择地址列表中的第一个节点连接,如果不成功的话,会选择地址列表的第二个地址,以此类推。正如名称定义,一旦建立连接,当连接节点发生故障时,是不会故障转移的,需要用户重新建立连接。
客户端BOSS(192.168.1.220)tnsnames.ora中配置如下:
RAC =
[oracle@boss admin]$ sqlplus /nolog
SQL> conn system/oracle@rac
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac1
由于所有节点都是正常状态,所以连接会到节点1,也就是地址列表中的第一个IP地址,关闭节点rac1
[oracle@rac1 ~]$ srvctl stop instance -d rac -i rac1 -o abort
再次回到BOSS,执行查询报错,等待一段时间执行,还是报错,如果用户想要操作,需要重新建立连接,再连接时会连接到rac2
SQL> select instance_name from v$instance;
select instance_name from v$instance
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
SQL> select instance_name from v$instance;
ERROR:
ORA-03114: not connected to ORACLE
SQL> select instance_name from v$instance;
ERROR:
ORA-03114: not connected to ORACLE
SQL> conn system/oracle@rac
Connected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac2
二.透明应用故障转移TAF(transparent application failover)
2.如果METHOD选择PRECONNECT
TESTRAC_PRE1 =
TESTRAC_PRE2 =
2、服务器端的TAF
客户端的TAF实现起来并不麻烦,配置也很简单,但如果客户端机器很多,如果failover_mode配置需要做出改动,那所有的机器就要维护,基于这样的考虑,Oracle引入了服务器端TAF,通过和service配合使用,把failovermode的配置信息保存在数据库的数据字典中,这样就减少了维护的成本。
关于service,他的作用不仅仅是为了实现failover,但在这个章节中我们只讨论failover的部分。
可以使用DBCA工具创建和管理service,配置完成后,service信息会加入到OCR和数据库的数据字典,并且service会自动启动,由于DBCA是完全图形的操作,比较简单,这里不再介绍。当然也可以使用srvctl工具添加service。无论使用DBCA工具还是使用srvctl命令来管理service,都无法配置TAF的TYPE、DELAY、RETRIES属性,必须使用dbms_service包来修改这些属性
通过数据字典信息确认数据库中应经存在的服务(service)
SQL> @/home/oracle/workshop/service
NAME
-----------------------