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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
11月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
905 93
|
12月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
515 6
|
存储 人工智能 测试技术
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
806 2
|
Oracle Java 关系型数据库
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle
|
11月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
1292 11
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
467 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
测试技术 数据库 Python
解释测试中setup和teardown函数的应用。
总结起来,`setup`和 `teardown`函数就像扔宴会的主人,他们保障了宴会的流畅进行。他们是准备环境和清理现场的重要工作人员,他们的工作直接影响着我们的测试效率和质量。我们可以把 `setup`和 `teardown`想象成隐藏在幕后,默默为我们服务的工作者,他们做着我们需要但是往往忽视的工作。所以,下次当你写测试的时候,别忘了给你的 `setup`和 `teardown`留出足够的位置,因为他们的作用可能是你成功的保证。
334 14
|
机器学习/深度学习 存储 分布式计算
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证(211)
本文探讨了Java大数据与机器学习模型在金融风险压力测试中的创新应用。通过多源数据采集、模型构建与优化,结合随机森林、LSTM等算法,实现信用风险动态评估、市场极端场景模拟与操作风险预警。案例分析展示了花旗银行与蚂蚁集团的智能风控实践,验证了技术在提升风险识别效率与降低金融风险损失方面的显著成效。
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
1555 0

推荐镜像

更多