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测试通过。