机器配置:
机器名称 ip地址 vip地址 备注
RAC1 192.168.1.10 192.168.1.110 rac集群节点1
RAC2 192.168.1.11 192.168.1.111 rac集群节点2
BOSS 192.168.1.220 ------------- 共享存储节点、客户端机器
一.客户端连接时故障转移(client-side connect time failover)
在Tnsnames.ora中设置failover=on(failover=on是默认选项),用户首先选择地址列表中的第一个节点连接,如果不成功的话,会选择地址列表的第二个地址,以此类推。正如名称定义,一旦建立连接,当连接节点发生故障时,是不会故障转移的,需要用户重新建立连接。
客户端BOSS(192.168.1.220)tnsnames.ora中配置如下:
RAC =
(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 = 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