Oracle 11g 引入了scan ip 。但是在没有DNS的情况下,客户端连接RAC好多还是使用oracle 10g的办法。就是在客户端的tnsname.ora中配置failover。
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = yes)
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.203)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.204)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.205)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
(FAILOVER = on)
(TYPE = select)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
)
这样可以实现客户端的failover,那么能不能在服务器端实现failover,客户端只配置scan ip呢。今天做了个测试,测试结果OK.说下配置过程:
How To Configure Server Side TransparentApplication Failover [ID 460982.1]
1.创建TAFService
[oracle@db1 bin]$ ./srvctl add service -d orcl -s server_taf -r "orcl1,orcl2" -P BASIC
--这里的orcl是database name,orcl1和orcl2 是instance name。
2. 启动server_taf服务
[oracle@db1 bin]$ ./srvctl start service -d orcl -s server_taf
3. 检查service运行情况
[oracle@db1 bin]$ ./srvctl config service -d orcl
Service name: server_taf
Service is enabled
Server pool: orcl_server_taf
Cardinality: 2
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: false
Failover type: NONE
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Preferred instances: orcl1,orcl2
Available instances:
4.确认serviceID
SQL> select name,service_id from dba_services where name = 'server_taf';
NAME SERVICE_ID
--------------------------------------------------------------------------
server_taf 3
5.给service添加参数:
SQL> execute dbms_service.modify_service (service_name => 'server_taf' -
, aq_ha_notifications => true -
, failover_method => dbms_service.failover_method_basic -
, failover_type => dbms_service.failover_type_select -
, failover_retries => 180 -
, failover_delay => 5 -
, clb_goal => dbms_service.clb_goal_long);
6. 确认参数修改:
col name format a15
col failover_method format a11 heading 'METHOD'
col failover_type format a10 heading 'TYPE'
col failover_retries format 9999999 heading 'RETRIES'
col goal format a10
col clb_goal format a8
col AQ_HA_NOTIFICATIONS format a5 heading 'AQNOT'
SQL> select name, failover_method,failover_type, failover_retries,goal, clb_goal,aq_ha_notifications from dba_services where service_id = 3;
NAME METHOD TYPE RETRIES GOAL CLB_GOAL AQNOT
--------------- ----------- ------------------ ---------- -------- -----
server_taf BASIC SELECT 180 NONE LONG YES
SQL>
7. 检查service注册情况:
[oracle@db1 bin]$ lsnrctl services
LSNRCTL for Linux: Version 11.2.0.3.0 -Production on 15-JUL-2012 13:26:43
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db1)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for thisservice...
Handler(s):
"DEDICATED" established:57 refused:0 state:ready
LOCAL SERVER
Service "orcl" has 1 instance(s).
Instance "orcl1", status READY, has 1 handler(s) for thisservice...
Handler(s):
"DEDICATED" established:11 refused:0 state:ready
LOCAL SERVER
Service "orclXDB" has 1instance(s).
Instance "orcl1", status READY, has 1 handler(s) for thisservice...
Handler(s):
"D000" established:0 refused:0 current:0 max:1022 state:ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=db1.tianlesoftware.com)(PORT=38731))
Service "server_taf" has 1instance(s).
Instance "orcl1", status READY, has 1 handler(s) for thisservice...
Handler(s):
"DEDICATED" established:11 refused:0 state:ready
LOCAL SERVER
The command completed successfully
8. 客户端就可以使用Service-SideTAF了:
在客户端TNS 配置:
orcl =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST= orcl.tianlesoftware.com)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
-- orcl.tianlesoftware.com是SCAN IP地址。
9.查看进程状态
[oracle@db1 bin]$ ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.DATA.dg ora....up.type ONLINE ONLINE db1
ora.FRA.dg ora....up.type ONLINE ONLINE db1
ora....ER.lsnr ora....er.type ONLINE ONLINE db1
ora....N1.lsnr ora....er.type ONLINE ONLINE db2
ora....N2.lsnr ora....er.type ONLINE ONLINE db1
ora....N3.lsnr ora....er.type ONLINE ONLINE db1
ora.OCR.dg ora....up.type ONLINE ONLINE db1
ora.asm ora.asm.type ONLINE ONLINE db1
ora....SM1.asm application ONLINE ONLINE db1
ora....01.lsnr application ONLINE ONLINE db1
ora....-01.gsd application OFFLINE OFFLINE
ora....-01.ons application ONLINE ONLINE db1
ora....-01.vip ora....t1.type ONLINE ONLINE db1
ora....SM2.asm application ONLINE ONLINE db2
ora....02.lsnr application ONLINE ONLINE db2
ora....-02.gsd application OFFLINE OFFLINE
ora....-02.ons application ONLINE ONLINE db2
ora....-02.vip ora....t1.type ONLINE ONLINE db2
ora.cvu ora.cvu.type ONLINE ONLINE db1
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE db1
ora.oc4j ora.oc4j.type ONLINE ONLINE db1
ora.ons ora.ons.type ONLINE ONLINE db1
ora.orcl.db ora....se.type ONLINE ONLINE db1
ora....taf.svc ora....ce.type ONLINE ONLINE db1
ora.scan1.vip ora....ip.type ONLINE ONLINE db2
ora.scan2.vip ora....ip.type ONLINE ONLINE db1
ora.scan3.vip ora....ip.type ONLINE ONLINE db1
客户端只配置scan ip连接服务器failover测试通过。