Jdbc连接Oracle12C集群环境

时间:2022-03-13 14:36:24

jdbc.url=jdbc:Oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.31.0.1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.31.0.2)(PORT = 1521))(LOAD_BALANCE = ON)(FAILOVER =ON))(CONNECT_DATA = (SERVER = DEDICATED)(INSTANCE_ROLE = ANY)(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC))(SERVICE_NAME = orcl)))

参数的含义:

LOAD_BALANE FAILOVER

ON ON 客户端新建连接随机尝试ADDRESS_LIST中的监听,直到连接到一个可用监听,或者连完列表中的所有监听,如没有一个监听可用,则返回错误信息

ON OFF 客户端新建连接随机尝试ADDRESS_LIST中的任一监听,无论这个监听是否可用,如不可用直接返回错误。

OFF ON 客户端新建连接按顺序尝试ADDRESS_LIST中的监听,直到连接到一个可用监听,或者连完列表中的所有监听如没有一个监听可用,则返回错误信息

OFF OFF 客户端新建连接仅连接ADDRESS_LIST中第一个监听,无论这个监听是否可用,如不可用直接返回错误。

对于已有连接的失败切换,首先要求FAILOVER = ON,并且设置了FAILOVER_MODE

FAILOVER_MODE的子参数含义:

TYPE:1)session---如果用户连接丢失,将创建一个新的会话连接到备用节点,用户的所有未提交的操作必须回滚,然后再次执行,SELECT操作也被中止.

2)select---如果用户连接丢失,将使用游标和之前的快照继续执行SELECT操作,叫做SQL接管,SQL接管能够无缝接管理的事务类型只有SELECT语句.其它的操作也必须要回滚然后再次执行.

3)none---客户端默认值,禁止SQL接管功能,主要用于测试的目地,在实际应用中TYPE应指定为session或者select

METHOD:1)basic---仅仅在FAILOVER发生时才连接备用节点

2)preconnect---在用户连接到主节点时同时也在备用节点产生一个连接会话,设置预连接模式,能够快速接管SQL

RETRIES:当前节点失败后,失败切换功能会尝试连接备用节点,这个值确定了尝试的次数,如果仅DELAY被指定,RETRIES默认为5

DELAY:两次尝试之间等待的秒数,如果仅指定RETRIES,DELAY默认为1秒

BACKUP:指定另外一个用于备份连接的网络服务名,当RAC设置为主次模式时,使用此参数,并且METHOD应该设为preconnect

RAC设置为主次模式时的tnsnames配置

无客户端负载均衡(主次模式就不要客户端负载均衡了),有透明应用切换且有预连接的tnsnames配置

instance_role  在下列情况使用:

1、你想明确指定连接到第一个实例还是第二个实例上去,默认是连接到第一个实例,主实例上。
2、你想使用taf预连接到第二实例上去。

The INSTANCE_ROLE 值有:
primary: 指定连接到 primary instance。
secondary: 指定连接到secondary instance,不直接接收连接,并不是指在客户端不能连通这个服务命名,只不过这个连接会被路由到主节点,次要次点并不真正有连接连上去。
any: 可以连接到连接地址里的任何一个实例。