使用rac的时候,为了尽可能的减少内部网络通信,我们通常把相同的应用连接到同一节点上,当该节点出现意外 down掉之后,client端应用能够透明的切换到其他节点上,通过这种办法尽可能的减少节点间cr block的构造或者说尽可能的减少cache fusion从而减少内部网络通信
这里的通过tnsname的配置,对不同的应用做不同的节点上的分离。从而让相同的应用都在固定的节点上,从而减小cache fusion的影响。这个是RAC的优化中比较实用和常见的做法。
在client的 tnsnames文件中配置racdb_1和racdb_2两个net service:
这里要求failover 的METHOD必须是preconnect.backup是net service名
racdb_1=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=node1)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=racdb_taf_pre)
(INSTANCE_NAME=racdb1)
(FAILOVER_MODE=
(BACKUP=racdb_2)
(TYPE=select)
(METHOD=preconnect))))
racdb_2=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=node2)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=racdb_taf_pre)
(INSTANCE_NAME=racdb2)
(FAILOVER_MODE=
(BACKUP=racdb_1)
(TYPE=select)
(METHOD=preconnect))))
--===============================
C:>sqlplus system/system@racdb_1
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 2月 6 21:44:53 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> COLUMN instance_name FORMAT a13
SQL> COLUMN host_name FORMAT a9
SQL> COLUMN failover_method FORMAT a15
SQL> COLUMN failed_over FORMAT a11
SQL> SELECT
2 instance_name
3 , host_name
4 , NULL AS failover_type
5 , NULL AS failover_method
6 , NULL AS failed_over
7 FROM v$instance
8 UNION
9 SELECT
10 NULL
11 , NULL
12 , failover_type
13 , failover_method
14 , failed_over
15 FROM v$session
16 WHERE username = 'SYSTEM';
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
racdb1 node1
SELECT PRECONNECT NO
--=============================
[oracle@node1 bin]$ srvctl stop instance -d racdb -i racdb1 -o abort
[oracle@node1 bin]$ srvctl status database -d racdb
Instance racdb1 is not running on node node1
Instance racdb2 is running on node node2
--==============================
SQL> /
--这里出现了长时间的等待,不过最终还是透明的切换到了racdb2 node上,长时间等待的原因是可能我在racdb_1和racdb_2的failover mode中没有设置RETRIES 和 DELAY 参数,而这些参数使用了default值
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
racdb2 node2
SELECT PRECONNECT YES
SQL>
这里的通过tnsname的配置,对不同的应用做不同的节点上的分离。从而让相同的应用都在固定的节点上,从而减小cache fusion的影响。这个是RAC的优化中比较实用和常见的做法。
在client的 tnsnames文件中配置racdb_1和racdb_2两个net service:
这里要求failover 的METHOD必须是preconnect.backup是net service名
racdb_1=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=node1)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=racdb_taf_pre)
(INSTANCE_NAME=racdb1)
(FAILOVER_MODE=
(BACKUP=racdb_2)
(TYPE=select)
(METHOD=preconnect))))
racdb_2=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=node2)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=racdb_taf_pre)
(INSTANCE_NAME=racdb2)
(FAILOVER_MODE=
(BACKUP=racdb_1)
(TYPE=select)
(METHOD=preconnect))))
--===============================
C:>sqlplus system/system@racdb_1
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 2月 6 21:44:53 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> COLUMN instance_name FORMAT a13
SQL> COLUMN host_name FORMAT a9
SQL> COLUMN failover_method FORMAT a15
SQL> COLUMN failed_over FORMAT a11
SQL> SELECT
2 instance_name
3 , host_name
4 , NULL AS failover_type
5 , NULL AS failover_method
6 , NULL AS failed_over
7 FROM v$instance
8 UNION
9 SELECT
10 NULL
11 , NULL
12 , failover_type
13 , failover_method
14 , failed_over
15 FROM v$session
16 WHERE username = 'SYSTEM';
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
racdb1 node1
SELECT PRECONNECT NO
--=============================
[oracle@node1 bin]$ srvctl stop instance -d racdb -i racdb1 -o abort
[oracle@node1 bin]$ srvctl status database -d racdb
Instance racdb1 is not running on node node1
Instance racdb2 is running on node node2
--==============================
SQL> /
--这里出现了长时间的等待,不过最终还是透明的切换到了racdb2 node上,长时间等待的原因是可能我在racdb_1和racdb_2的failover mode中没有设置RETRIES 和 DELAY 参数,而这些参数使用了default值
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
racdb2 node2
SELECT PRECONNECT YES
SQL>
- 提供Oracle管理/故障处理/优化/安装/RAC/备份恢复技术服务,提供专业的Oracle培训和咨询服务。
- 邮件: inthirties@gmail.com
- MSN: inthirties@hotmail.com
- QQ: inthirties@qq.com
- 专业论坛 http://www.inthirties.com
- 技术博客 http://blog.csdn.net/inthirties
- 个人站点 http://blog.inthirties.com