暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 10g RAC Failover(三)

原创 黄宸宁 2013-04-17
1117

oracle 10g RAC Failover(一)

oracle 10g RAC Failover(二)

二、TAF(Transparent Application Failover)

1、配置客户端tnsnames.ora,首先测试TYPE为session的情况

orcldb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = orlrac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = orlrac2-vip)(PORT = 1521))
(LOAD_BALANCE=YES)
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
(FAILOVER_MODE=
(TYPE=session)
(METHOD=basic)
(RETRIES=180)
(DELAY=5)
)
)

2、通过脚本进行测试


[oracle@hcn10g script]$ cat loginfail1.sh
sqlplus -s scott/oracle@orcldb <<EOF>fail.log
select instance_name from v$instance
/
select object_name,object_id from dba_objects
/
select instance_name from v$instance
/
exit
EOF

在运行脚本的过程中,对1号节点执行shutdown abort操作,模拟断电


运行结果:


[oracle@hcn10g script]$ 
[oracle@hcn10g script]$ ksh loginfail1.sh
[oracle@hcn10g script]$
[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|head -5

INSTANCE_NAME
----------------
orcldb1

[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|tail -5 ---在关闭1号节点后,连接自动切换到2号节点

INSTANCE_NAME
----------------
orcldb2

[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|grep ORA-
ORA-25401: can not continue fetches
[oracle@hcn10g script]$

---有ORA-的提示,在报错的同时该连接已经重新连接到其他可用的数据库实例上,后续的SQL语句不受影响。
---但当前这条SQL将不会继续执行

[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|wc -l
37226
[oracle@hcn10g script]$

---当1号实例abort后,虽然会自动连接到其他正常的节点上,不过正在执行的SQL将中断,后续的SQL会继续执行

OBJECT_NAME OBJECT_ID
---------------------------------------- ----------
sun/security/x509/X509CRLImpl 33972
java/security/cert/CRL 20087
java/security/cert/CRL 33973
sun/security/pkcs/PKCS7 20088
sun/security/pkcs/PKCS7 33974
/8f9b31a0_ExceptionInInitializ 20089
/8f9b31a0_ExceptionInInitializ 33975
/f41eb3e7_PKCS9Attribute 20090
ERROR:
ORA-25401: can not continue fetches ----当前的SQL中断
29235 rows selected.

INSTANCE_NAME ----后续SQL继续进行
----------------
orcldb2

3、修改tnsnames.ora,测试TYPE为SELECT的情况


ORCLDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.112)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.114)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcldb)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=basic)
(RETRIES=180)
(DELAY=5)
)
)
)

4、通过脚本进行测试
在运行脚本的过程中,对1号节点执行shutdown abort操作,模拟断电

[oracle@hcn10g script]$ cat loginfail1.sh
sqlplus -s scott/oracle@orcldb <<EOF>fail.log
select instance_name from v$instance
/
select object_name,object_id from dba_objects
/
select instance_name from v$instance
/
exit
EOF
[oracle@hcn10g script]$

[oracle@hcn10g script]$
[oracle@hcn10g script]$ ksh loginfail1.sh
[oracle@hcn10g script]$
[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log |head -5

INSTANCE_NAME
----------------
orcldb1

[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|tail -5 ---在关闭1号节点后,连接自动切换到2号节点

INSTANCE_NAME
----------------
orcldb2

[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|grep ORA-
[oracle@hcn10g script]$
[oracle@hcn10g script]$
[oracle@hcn10g script]$
[oracle@hcn10g script]$ cat fail.log|wc -l
63727
[oracle@hcn10g script]$

没有出现ORA-的报错
如果直接输出的话,可以在节点1中断过程中,
看到输出结果在短暂的停顿后重新恢复输出,但是不会有报错

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论