现在我们已经安装了RAC有两个instance组成。
1. RAC1服务器上:
RACDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(LOAD_BALANCE = on)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(failover_mode =
(type = select)
(method = basic)
)
)
)RACDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(INSTANCE_NAME = racdb1)
)
)2. RAC2服务器上:
RACDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(LOAD_BALANCE = on)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(failover_mode =
(type = select)
(method = basic)
)
)
)RACDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(INSTANCE_NAME = racdb2)
)
)3. 在JNDI上我们是按照“Connect-Time Failover”的模式来配置的,想做成主备模式,比如以下主用101,只有101failed情况下才自动切换到102:
RACDB1_FAILOVER =
(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.102)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=RACDB)
(failover_mode =
(type = select)(method = basic)
)
)
)
按照这种配置模式的特点
One service(Tries one node,then the other node)
Used for failover
Balance is done manually
In the event of a failure(Transaction is lost;Session is lost; Reconnection occurs automatically)
load balance应该是按照先101,只有101失败才try102.
但是实际从数据库表sequence的生产来看,还是两个instance交替使用。请问,这是为什么?还是有什么地方配置有问题?请高手指点!多谢!
1. RAC1服务器上:
RACDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(LOAD_BALANCE = on)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(failover_mode =
(type = select)
(method = basic)
)
)
)RACDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(INSTANCE_NAME = racdb1)
)
)2. RAC2服务器上:
RACDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(LOAD_BALANCE = on)
(FAILOVER = on)
)
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(failover_mode =
(type = select)
(method = basic)
)
)
)RACDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = racdb)
(INSTANCE_NAME = racdb2)
)
)3. 在JNDI上我们是按照“Connect-Time Failover”的模式来配置的,想做成主备模式,比如以下主用101,只有101failed情况下才自动切换到102:
RACDB1_FAILOVER =
(DESCRIPTION=
(FAILOVER=on)
(LOAD_BALANCE=off)
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.102)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=RACDB)
(failover_mode =
(type = select)(method = basic)
)
)
)
按照这种配置模式的特点
One service(Tries one node,then the other node)
Used for failover
Balance is done manually
In the event of a failure(Transaction is lost;Session is lost; Reconnection occurs automatically)
load balance应该是按照先101,只有101失败才try102.
但是实际从数据库表sequence的生产来看,还是两个instance交替使用。请问,这是为什么?还是有什么地方配置有问题?请高手指点!多谢!
如果是这样,你就要配置server端的TAF了.
也就是说,在pool的连接方式下,即使客户端JNDI配置成Connect-Time Failover的模式,实际还是使用了服务端的RACDB的配置方式?
如果要使客户端的Connect-Time Failover的模式生效,是不是直接把服务端的RACDB配置改了就行?(比如服务器RAC1上面的RACDB改成和RACDB1_FAILOVER一样)?
你说的连接池的预连接,它不使用client端(JNDI)的配置来做预连接吗?
那服务端的TAF需要怎么做呢?