Rac环境下正确配置LISTENER和TNS

Rac环境下正确配置LISTENERTNS

 

RAC环境下配置LISTENERTNS必须考虑负载均衡,故障切换等因素。这里用一个四节点的RAC环境为例:

node1:rac1

node2:rac2

node3:rac3

node4:rac4

1、服务器端的配置 

listener.ora的配置:

配置每个实例本地的监听器:

node1:

LISTENER_RAC1 =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = TCP)(HOST = node1-priv)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))

      )

    )

  )

node2:

LISTENER_RAC2 =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = TCP)(HOST = node2-priv)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))

      )

    )

  )

node3:

LISTENER_RAC3 =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = TCP)(HOST = node3-priv)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))

      )

    )

  )

node4:

LISTENER_RAC4 =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = TCP)(HOST = node4-priv)(PORT = 1421)(IP = FIRST))

        (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))

      )

    )

  )

tnsnames.ora的配置:

在每个实例的tnsnames.ora文件中加入以下信息:

LISTENER_RAC =

  (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST))

     (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST))

     (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST))

     (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST))

  )

LISTENER_RAC1 =

  (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST))

  )

LISTENER_RAC2 =

  (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST))

  )

LISTENER_RAC3 =

  (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST))

  )

LISTENER_RAC4 =

  (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST))

  )

     

设置LOCAL_LISTENERREMOTE_LISTENER参数

前面我们讲过,设置LOCAL_LISTENER参数是由于LISTENER使用了非TCP协议或非1521端口的情况下,那么在RAC环境下不管是使用了默认的TCP1521还是其他协议都建议配置LOCAL_LISTENER.REMOTE_LISTENER参数在RAC环境下非常重要,是服务器使用load_balance的一个工具,在服务器端的连接中,Oracle NET通过remote_listener确定当前RAC中的远程监听和实例,以便分发连接.

执行下面的语句设置LOCAL_LISTENERREMOTE_LISTENER参数:

ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC1' SCOPE=BOTH SID='RAC1';

ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC2' SCOPE=BOTH SID='RAC2';

ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC3' SCOPE=BOTH SID='RAC3';

ALTER SYSTEM SET LOCAL_LISTENER='LISTENER_RAC4' SCOPE=BOTH SID='RAC4';

...................

ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC1';

ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC2';

ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC3';

ALTER SYSTEM SET REMOTE_LISTENER='LISTENER_RAC' SCOPE=BOTH SID='RAC4';

2、客户端TNS的配置

RAC环境下ClientTNS的配置和非RAC环境下,多IP的配置情况一样,都要配置load_balance TAF:

rac =

(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = IP1)(PORT = 1521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = IP2)(PORT = 1521))

    (LOAD_BALANCE = YES)

    (CONNECT_DATA =

        (SERVER = DEDICATED)

        (SERVICE_NAME = ?)   //注意:这里指的不是数据库SID

    )

)

 

rac =

(DESCRIPTION =

   (ADDRESS_LIST =

     (LOAD_BALANCE=ON)

     (FAILOVER=ON)

     (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1421)(IP = FIRST))

     (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1421)(IP = FIRST))

     (ADDRESS = (PROTOCOL = TCP)(HOST = node3-vip)(PORT = 1421)(IP = FIRST))

     (ADDRESS = (PROTOCOL = TCP)(HOST = node4-vip)(PORT = 1421)(IP = FIRST))

   )

   (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = RAC)

      (FAILOVER_MODE =

        (TYPE = SELECT)

        (METHOD = BASIC)

      )

   )

)

连接测试

 开启多个连接测试, 并查询gv$session视图看看是否连接达到负载均衡.

3、客户端HOSTS配置

Hosts文件添加

4、连接串解释

ADDRESS后面就是连接的IP和端口号;LOAD_BALANCE=YES表示是否负载均衡;SERVER = DEDICATIED表示专用服务器模式,感觉可以去掉;SERVICE_NAME=ORCL要操作数据库的服务名;TYPE = SELECT表示当一个连接好的会话的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话在执行的SQL 需要重新执行;METHOD = BASIC表示初始连接就连接一个接点,他还有个选项是PRECONNECT,表示初始连接所有的接点;RETRIES重试次数;DELAY重试时延迟(以秒为单位)

 

5ocithin的区别

jdbc:oracle:thin:@server ip:端口:service

jdbc:oracle:oci:@service

这下基本明白了

1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因。

2)原理上来看,thin是纯java实现tcp/ipc/s通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装(从oracle10.1.0开始,单独提供OCI Instant Client,不用再完整的安装client

3)它们分别是不同的驱动类别,oci是二类驱动, thin是四类驱动,但它们在功能上并无差异。

4)虽然很多人说oci的速度快于thin,但找了半天没有找到相关的测试报告。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-773505/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27042095/viewspace-773505/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值