`
tianlijia202
  • 浏览: 78008 次
  • 性别: 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-10g-RAC-负载均衡配置

    ORACLE 10g RAC 负载均衡配置 负载均衡是指连接的负载均衡。在 RAC 中,负载均衡分为两种,一种是基于客户端连接的,另外一种是基于服务器端的。下面将详细介绍基于客户端连接的负载均衡配置。 一、客户端负载均衡...

    虚拟机ESXi + SuSELinux11 + Oracle10g RAC 安装 ORACLE10g RAC FOR SUSE LINUX

    ### 虚拟机ESXi + SuSELinux11 + Oracle10g RAC 安装 ...综上所述,构建 Oracle 10g RAC 集群涉及到多方面的配置和技术细节,需要按照严格的顺序和要求逐步完成。在整个过程中,确保各部分的兼容性和稳定性至关重要。

    Oracle10g RAC集群技术.rar

    Oracle 10g RAC(Real Application Clusters)集群技术是Oracle数据库系统中的一种高可用性和高性能解决方案。它允许多个数据库实例同时访问同一物理数据库,以实现数据的共享和负载均衡,从而提高系统的可靠性和...

    Oracle10gRAC安装配置.ppt

    Oracle 10g RAC 安装配置 Oracle 10g RAC(Real Application Clusters)是一种高可用性、可扩展性的数据库解决方案,它允许多个服务器节点组成一个集群,提高了数据库的性能和可用性。在本文档中,我们将详细介绍 ...

    Oracle 11g RAC+DG安装配置

    RAC 允许多个实例在同一个数据库上并行工作,提供故障切换和负载均衡,而 Data Guard 提供了备份数据库以防止主数据库发生故障时的数据丢失。 **一、主机整体规划** 在进行 RAC+DG 安装配置前,我们需要对硬件、...

    最详细的AIX Oracle 10g RAC实施文档

    Oracle Real Application Clusters(RAC)是Oracle数据库的一个重要特性,它允许多个数据库实例同时访问同一物理数据库,从而提供高可用性和负载均衡。在AIX平台上,这种技术可以实现更为稳定和高效的数据库服务。 ...

    oracle负载均衡

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

    Oracle 11g RAC+DG 非常牛逼的部署手册

    2.2 配置 Oracle 11g RAC:配置 Oracle 11g RAC 的数据库参数,包括数据库名称、实例名称、监听器配置等。 3. 配置 ASM 磁盘组 3.1 创建 ASM 磁盘组:创建 ASM 磁盘组,以便存储数据库的数据文件。 3.2 配置 ASM ...

    oracle10g rac安装

    总结来说,文档详细介绍了如何在VMware虚拟机环境中安装Oracle 10g RAC,包括了准备工作、虚拟机的创建与配置、安装前的软硬件准备以及安装过程中的注意事项等。整个过程涉及到了虚拟化、数据库集群、操作系统安装和...

    oracle 10G RAC

    ### Oracle 10G RAC 安装与配置详尽指南 #### 一、Oracle 10G RAC 概述 Oracle Real Application Clusters (RAC) 是一种集群数据库解决方案,可提供高可用性和可扩展性。Oracle 10G RAC 版本是 Oracle 在 2004 年...

    Oracle 10g RAC安装全面解读

    在安装 Oracle 10g RAC 之前,需要对服务器的网络配置进行必要的调整,以满足 RAC 的特殊需求。这通常涉及到对 `/etc/hosts` 文件的编辑,确保每个节点都能正确识别其他节点以及它们各自的 IP 地址。此外,还需要...

    超完美Oracle 10g RAC安装全过程 中文文档

    Oracle 10g RAC的安装还需遵循Oracle提供的官方安装文档,安装文档通常包含了对于安装过程的详尽指导,包括检查安装前的必要条件、配置共享存储、安装Clusterware软件和Oracle数据库软件、配置网络以及初始化数据库...

    ORACLE_10g_RAC_负载均衡配置

    Oracle 10g RAC(Real Application Clusters)是一种高可用性和可伸缩性的数据库解决方案,它允许多个实例在不同的服务器上共享同一物理数据库。负载均衡是RAC中的关键特性,确保数据库工作负载均匀分布到集群的不同...

    ORACLE 10G Rac

    Oracle 10g RAC(Real Application Clusters)是Oracle数据库的一个高级特性,它允许在同一集群中的多个服务器上共享一个数据库实例,提供高可用性和负载均衡。在本文中,我们将探讨如何搭建Oracle 10g RAC环境,并...

    oracle 10g RAC for windows

    ### Oracle 10g RAC for Windows:详细安装与配置指南 #### 1. 引言 Oracle 10g RAC(Real Application Clusters)是Oracle数据库的一个关键组件,它允许在一个集群环境中运行多个数据库实例,从而提高可用性和...

    oracle10gRAC+Data Guard环境配置以及原理说明(非常详细)

    首先,Oracle RAC 是一个集群数据库解决方案,允许多台服务器共享同一个数据库实例,以实现负载均衡和故障切换。在Oracle 10g RAC环境下,数据存储在共享的存储设备上,每个节点都有访问权。当一个节点出现故障时,...

    oracle 10g rac grid,services & clustering

    #### 四、Oracle 10g RAC 的安装与配置 - **软件准备**:确保安装所需的 Oracle 软件包已就绪。 - **硬件检查**:检查网络连接、存储设备和操作系统是否满足 RAC 的要求。 - **环境变量设置**:配置 ORACLE_HOME、...

Global site tag (gtag.js) - Google Analytics