Oracle RAC负载均衡和透明应用失败切换的配置和测试过程(二、配置实例)

简介:

第2节  配置实例
主要包括的是服务器端的init.ora,listener.ora和tnsnames.ora文件以及客户端的tnsnames.ora文件。
针对本项目的双节点的群集设置,主要配置如下:
hostname  service name  sid name  instance_name  ORACLE_HOME
========  ===========  ========   =============  ===============
node1   test1      rac           rac1         rac1       /oracle/product/9201
node2   test2      rac           rac2         rac2       /oracle/product/9201
2.1 init.ora
所有节点的init.ora 文件必须配置如下:
remote_listener='LISTENERS_RAC'
rac1.local_listener="LISTENER_rac1”
rac2.local_listener="LISTENER_rac2"
# dispatchers="(pro=ipc)(dis=0)"
db_name='rac'  /**********可以不用*************/
rac1.instance_name='rac1'
rac2.instance_name='rac2'
2.2 show parameter
既然service_names在init.ora文件中没有规定,它缺省是db_name.db_domain。每一个节点列出它的主机名和instance_name。随着以上的设置,在你启动进程后,当你从第一个节点检查sql 会话时,你将会发现下面的信息:
1)节点一
SQL> show parameter db_name
NAME      TYPE    VALUE
db_name   string    rac
SQL> show parameter db_domain
NAME      TYPE      VALUE
db_domain  string
SQL> show parameter service_names
NAME          TYPE      VALUE
service_names  string    rac
SQL> show parameter instance_name
NAME              TYPE      VALUE
instance_name     string    rac1
SQL> show parameter listener
NAME                    TYPE      VALUE
local_listener          string    LISTENER_rac1
mts_listener_address    string
mts_multiple_listeners  boolean   FALSE
remote_listener         string    LISTENERS_RAC
2)节点二
SQL> show parameter db_name
NAME       TYPE      VALUE
db_name    string    rac
SQL> show parameter db_domain
NAME           TYPE      VALUE
db_domain      string
SQL> show parameter service_names
NAME            TYPE      VALUE
service_names    string    rac
SQL> show parameter instance_name
NAME               TYPE      VALUE
instance_name      string    rac2
SQL> show parameter listener
NAME                    TYPE      VALUE
local_listener         string    LISTENER_rac2
mts_listener_address   string
mts_multiple_listeners boolean   FALSE
remote_listener        string    LISTENERS_RAC
2.3 listener.ora
test1 listener.ora file
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
      )
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/product/9201)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (ORACLE_HOME = /oracle/product/9201)
      (SID_NAME = rac1)
    )
  )

Test2 listener.ora file
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
      )
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/product/9201)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (ORACLE_HOME = /oracle/product/9201)
      (SID_NAME = rac2)
    )
  )

2.4 tnsnames.ora
test1—test2 and client side tnsnames.ora file
LISTENERS_RAC =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
  )
LISTENER_RAC2 =
  (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))

LISTENER_RAC1 =
  (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
RAC2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = rac)
      (INSTANCE_NAME = rac2)
    )
  )
RAC1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = rac)
      (INSTANCE_NAME = rac1)
    )
  )

RAC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
      (LOAD_BALANCE = on)
(FAILOVER=on)
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac)
      (failover_mode=(type=select)(method=basic))/********TAF使用的配置**********/
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
//////////////////////////////////////////////////////////////
failover =
  (DESCRIPTION =
    (enable=broken)
    (LOAD_BALANCE = yes)
    (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = rac)
      (failover_mode=(type=select)(BACKUP=cletus)(method=basic))
    )
  )
//////////////////////////////////////////////////////////////////
2.5 配置注释
1) LISTENERS_RAC, LISTENER_rac1, LISTENER_rac2是net_service_name (连接描述) for remote_listener和local_listener.在客户端,你并不需要这些参数。
2) failover 是为透明应用失败切换(TAF)测试的net_service_name 。
3) RAC 是客户端的负载平衡的 net_service_name,如果你不需要配置TAF,这有另外一种设置客户端连接负载平衡的配置方法, 下面是另外一种办法:
RAC_alternative =
    (DESCRIPTION =
    (ADDRESS_LIST =
      (LOAD_BALANCE = yes)
      (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = rac)
    )
  )
注:  (load_balance=yes)可以使Net程序以一种随机的顺序处理地址列表中的侦听器,平衡不同侦听器之间的负载。当被设成OFF,Net程序将以顺序的方式处理直到一个成功。这个参数必须在你的net service name (connect descriptor)正确的配置. 缺省情况下这个参数被设成ON, Load balancing能联系到ADDRESSes和DESCRIPTIONs的设置并且在ADDRESS_LIST里进行规定。如果你使用ADDRESS_LIST,(load_balance=yes)将会在(ADDRESS_LIST=)部分。如果你不使用ADDRESS_LIST, (load_balance=yes)将会在(description=)部分里,我建议不使用(ADDRESS_LIST=) 字句。
4)(failover=on)缺省是在ADDRESS_LISTs, DESCRIPTION_LISTs和一个DESCRIPTIONs的设置里,因此你不需要规定。它是作为connect-time-failover,请注意不要与透明应用切换(TAF)发生冲突。
5)(failover_mode=):在FAILOVER_MODE参数必须包括在一个net_service_name的CONNECT_DATA部分。
6)这儿在(failover_mode=)里没有(backup=failover),
7) There is no (backup=failover) in (failover_mode=), this 暗示着
(failover_mode=(type=select)(method=basic)(backup=failover)),它意味着无论是否failover发生,连接的会话将会切换到net_service_name又进行失败切换,当使用PRECONNECT来pre-establish连接时BACKUP应该被规定,需要详细的TAF信息,请参考Oracle官方文档。



本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/11/19/2777876.html,如需转载请自行联系原作者。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
540 93
|
6月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
209 4
|
7月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
324 13
|
Oracle Java 关系型数据库
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
419 86
|
人工智能 Ubuntu Linux
os-copilot使用之全面配置与使用测试
作为一名个人开发者,我主要从事云服务器架设工作。近期,我成功使用了OS Copilot的 `-t -f |` 功能,解决了执行语句、连续提问及快速理解文件的问题。我发现这些功能非常实用,特别是在使用Workbench时能快速调用AI助手。此外,建议将AI功能与xShell工具联动,进一步提升效率。文中详细记录了购买服务器、远程连接、安装配置OS Copilot以及具体命令测试的过程,展示了如何通过快捷键和命令行操作实现高效开发。
483 67
|
11月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
423 6
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1816 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
475 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。

推荐镜像

更多