`
tianlijia202
  • 浏览: 73989 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Oracle 10g RAC的负载均衡配置

阅读更多
转自:http://www.cnblogs.com/millen/archive/2009/05/06/1450844.html

Oracle 10g RAC的负载均衡配置
负载均衡是指连接的负载均衡。RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作。在RAC中,负载均衡分为两种,一种是基于客户端连接的,另外一种是基于服务器端的。
一、客户端负载均衡的配置

1、当前服务器中的数据库版本如下:

SQL> select * from v$version;



BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE    10.2.0.1.0      Production

TNS for Linux: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

2、在客户端的tnsnames.ora的配置中,只要连接的是整个数据库的服务名,不是实例名。

在服务器端查看RAC数据库的service_names:

SQL> show parameter service_names



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

service_names                        string      RACDB.chenxu.yo2.cn

SQL>

3、在客户端配置TNS:

客户端的负载均衡配置相对简单,只需要在tnsnames.ora中添加LOAD_BALANCE=ON这么一个选项即可。

RACDB =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

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

      (LOAD_BALANCE = on)

    )

    (CONNECT_DATA =

      (SERVICE_NAME = racdb.chenxu.yo2.cn)

    )

  )

配置TNS中的HOST值是服务器端RAC配置中的虚拟IP即VIP,如下:

[root@NODE01 admin]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1       localhost.localdomain   localhost

::1     localhost6.localdomain6 localhost6



192.168.1.180         node01

192.168.1.181         node02

192.168.1.170         vip01

192.168.1.171         vip02

10.10.10.1            priv01

10.10.10.2            priv02

4、在客户端测试:

开启sqlplus_1:

SQL> conn sys/chenxu@racdb as sysdba

已连接。

SQL>

SQL> show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB2

SQL>

SQL> select instance_name from gv$instance;



INSTANCE_NAME

----------------

RACDB1

RACDB2

开启sqlplus_2:

SQL> conn sys/chenxu@racdb as sysdba

已连接。

SQL> show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB1

开启sqlplus_3:

SQL> conn sys/chenxu@racdb as sysdba

已连接。

SQL>

SQL> show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB2

开启sqlplus_4:

SQL> conn sys/chenxu@racdb as sysdba

已连接。

SQL> show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB1

5、总结

这样当客户端连接RAC数据库时,会随机在TNS里面挑个监听地址进行连接。在Oracle 10g以前,假如有节点宕机或者类似事故时,客户端可能还是选择连接到这个节点,这样会发生较长时间的TCP等待超时。而在10g以后,由于VIP和FAN的引入,这样的情况可以得到很大程度的改善。客户端的负载均衡在通常情况下能够较好地工作,但是由于连接是在客户端随机发起的,这样客户端并不知道RAC各节点的负荷及连接数情况,有可能负荷大的节点还会源源不断地增加新的连接,导致RAC节点无法均衡工作。



二、服务器端负载均衡的配置

从Oracle 10g开始,服务器端的负载均衡可以根据RAC中各节点的负荷及连接数情况,而判定将新的客户端连接分配到负荷最小的节点上去。RAC中各节点的PMON进程每3秒会将各自节点的负荷(包括LOAD、最大LOAD、CPU使用率)及连接数更新到service_register里面,然后假如节点的负荷有发生变化,将会通知到监听程序,由监听程序再决定新的客户端连接分配至哪个节点。假如RAC中一个节点的监听失败了,PMON每一分钟会去检查一次是否已经恢复正常。

服务器端的监听配置是在各节点的tnsnames.ora里面添加一个连接到各个节点监听的条目,然后再在初始化参数里面设置remote_listeners这个参数。

1、测试客户端的TNS

修改客户端tnsnames.ora的文件,内容如下:

RACDB =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = racdb.chenxu.yo2.cn)

    )

  )

测试连接:

SQL>  conn sys/chenxu@racdb as sysdba

已连接。

SQL>

SQL> show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB1



2、配置服务器端TNS

服务器端的监听配置是在各节点的tnsnames.ora里面添加一个连接到各个节点监听的条目(红色代码),在服务器端每个节点的tnsnames.ora里面的内容如下:

[root@NODE01 admin]# pwd

/orac/orahome/oracle/product/10.2.0/db_1/network/admin

[root@NODE01 admin]#

[root@NODE01 admin]# more tnsnames.ora

# tnsnames.ora Network Configuration File: /orac/orahome/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.



RACDB1 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = RACDB.chenxu.yo2.cn)

      (INSTANCE_NAME = RACDB1)

    )

  )



RACDB =

  (DESCRIPTION =

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

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

    (LOAD_BALANCE = yes)

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = RACDB.chenxu.yo2.cn)

    )

  )



LISTENERS_RACDB =

  (ADDRESS_LIST =

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

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

  )



RACDB2 =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = RACDB.chenxu.yo2.cn)

      (INSTANCE_NAME = RACDB2)

    )

  )

3、在初始化参数中设置参数remote_listeners

SQL> conn sys/chenxu@racdb as sysdba

已连接。

SQL> show parameter remote_listener



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

remote_listener                      string

SQL>

SQL> alter system set remote_listener='LISTENERS_RACDB' sid='*';

#(reset命令可以撤销设置,恢复默认值)

系统已更改。



SQL>

SQL> show parameter remote_listener



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

remote_listener                      string      LISTENERS_RACDB

正确配置参数后,通过lsnrctl status命令看到在监听启动以后,可以看到监听器上有2个instance。

[root@NODE01 bin]# lsnrctl status



LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 18-DEC-2008 05:40:08



Copyright (c) 1991, 2005, Oracle.  All rights reserved.



Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

------------------------

Alias                     LISTENER_NODE01

Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production

Start Date                18-DEC-2008 00:18:07

Uptime                    0 days 5 hr. 22 min. 1 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /orac/orahome/oracle/product/10.2.0/db_1/network/admin/listener.ora

Listener Log File         /orac/orahome/oracle/product/10.2.0/db_1/network/log/listener_node01.log

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.170)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.180)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))

Services Summary...

Service "+ASM" has 1 instance(s).

  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...

Service "+ASM_XPT" has 1 instance(s).

  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...

Service "RACDB.chenxu.yo2.cn" has 2 instance(s).

  Instance "RACDB1", status READY, has 2 handler(s) for this service...

  Instance "RACDB2", status READY, has 1 handler(s) for this service...

Service "RACDBXDB.chenxu.yo2.cn" has 2 instance(s).

  Instance "RACDB1", status READY, has 1 handler(s) for this service...

  Instance "RACDB2", status READY, has 1 handler(s) for this service...

Service "RACDB_XPT.chenxu.yo2.cn" has 2 instance(s).

  Instance "RACDB1", status READY, has 2 handler(s) for this service...

  Instance "RACDB2", status READY, has 1 handler(s) for this service...

The command completed successfully

这时在客户端用sqlplus连接服务器数据库可能会出现如下错误:

ERROR:

ORA-12545: 因目标主机或对象不存在,连接失败

4、解决ORA-12545连接失败问题

方法一、配置客户端的Hosts文件

通过在客户端的Hosts文件中加入对两个服务名的名字解析可以解决ORA-12545问题。在windows下Hosts文件在C:"WINDOWS"system32"drivers"etc目录下,在linux修改/etc/hosts文件的内容。添加如下内容:

192.168.1.170   node01

192.168.1.171   node02



其中node01、node02为服务器节点的主机名。



[root@NODE01 bin]# hostname

NODE01

方法二、配置参数local_listener

这边就不详细描述,具体参考论坛文章,网址如下:(http://www.itpub.net/viewthread.php?tid=1060068)

5、通过客户端测试负载均衡

开启sqlplus_1:

SQL> conn sys/chenxu@racdb as sysdba

已连接。

SQL> show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB1

开启sqlplus_2:

SQL>  conn sys/chenxu@racdb as sysdba

已连接。

SQL>  show parameter instance_name



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      RACDB2

可以看到客户端能够连接到实例RACDB2,说明基于服务器端的负载均衡配置成功。


分享到:
评论

相关推荐

    oracle负载均衡

    oracle负载均衡配置ORACLE10gRAC负载均衡配置.pdf

    ORACLE_10g_RAC_负载均衡配置

    ORACLE_10g_RAC_负载均衡配置,负载均衡是指连接的负载均衡。RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作。在RAC中,负载均衡分为两种,一种是基于客户端连接的,...

    ORACLE-10g-RAC-负载均衡配置

    ORACLE_10g_RAC_负载均衡配置

    Oracle-11G-RAC及负载均衡搭建手册.docx

    本文详细的介绍了oracle 11g rac的搭建过程,并讲解了负载均衡的方法,是word文档,可以照着做一遍,图文并茂,容易理解!

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    第10章 RAC管理 10.1 Clusterware磁盘文件管理 10.1.1管理表决磁盘文件 10.1.2管理OCR文件 10.1.3表决磁盘和OCR的恢复案例 10.1.4管理OLR文件 10.1.5重建表决磁盘和OCR文件 10.1.6重新配置Grid ...

    Oracle_RAC安装配置指导书

     Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和...

    商业银行Oracle 11gr2 Rac For Linux安装方案.docx

    文档控制 2 目 录 3 一、硬件及软件需求 4 1.1 硬件需求 4 1.2 操作系统环境准备 5 1.3 本地文件系统 5 1.4 存储划分(VMWARE下) 6 ...9.1 负载均衡配置 47 9.2 在11g RAC中通过如下方式禁用DRM 47

    Oracle10g精简绿色版

    在Oracle 10g网格计算环境中,它允许用户比较方便地在节点分配硬盘与硬盘组,从而获得负载均衡的效果。 ● RAC:和Oracle 9i提供的RAC不同的是,Oracle 10g中,RAC使用了一种便携式集群软件,从而结束了集群软件由...

    基于Serv-HA的Oracle 11g共享存储双机热备配置手册

    基于Serv-HA的Oracle 11g共享存储双机热备配置手册,与RAC的区别在于实现的是高可用性HA,而不是负载均衡LB

    ORACLE数据库 安装配置规范 (V2.0.1)

    5.3.3.2 临时表空间的存储参数(Oracle9i/10g) 26 5.3.3.3 Undo/temp表空间的估算 26 5.4 其他文件设计 26 5.4.1 参数文件 27 5.4.1.1 参数文件命名规则 27 5.4.2 控制文件 27 5.4.2.1 控制文件命名规则 28 5.4.3 ...

    H3C SDN典型经验案例集汇总.rar

    05 H3C SDN网络overlay组网Oracle 11g RAC集群业务无法正常运行经验案例 06 SDN集中控制模式网络Overlay组网网关上做静态路由负载均衡失败处理经验案例 07 SDN网络VCFC强控方案下S9800部分流量三层转发不通问题...

    Oracle数据库设计指引全集

    对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle9i RAC的集群数据库的方法,集群节点数范围在2—64个。对于大型数据库系统,可以采用Sun Solaris ...

Global site tag (gtag.js) - Google Analytics