Oracle19c文档 tnsnames.ora (一)

发布时间:2024年01月09日

??官网地址:Local Naming Parameters in the tnsnames.ora File

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

6?tnsnames.ora 文件中的本地命名参数

本章提供了tnsnames.ora文件配置参数的完整列表。

6.1本地命名参数概述

tnsnames.ora文件是一个配置文件,其中包含映射到本地命名方法的连接描述符的网络服务名称,或映射到侦听器协议地址的网络服务名称。

网络服务名称是映射到包含在数据库网络地址中的别名。连接描述符。连接描述符通过协议地址包含侦听器的位置以及要连接的数据库的服务名称。客户端和数据库服务器(即其他数据库服务器的客户端)在与应用程序建立连接时使用网络服务名称。

默认情况下,该tnsnames.ora文件位于该ORACLE_HOME/network/admin目录中。Oracle Net 将检查其他目录中的配置文件。例如,检查tnsnames.ora文件的顺序如下:

  1. 环境变量指定的目录TNS_ADMIN。如果在指定的目录中找不到该文件,则假定该文件不存在。

  2. 如果TNS_ADMIN未设置环境变量,Oracle Net 将检查该ORACLE_HOME/network/admin目录。

笔记:

在 Microsoft Windows 上,TNS_ADMIN如果在进程的环境中设置了环境变量,则使用该环境变量。如果TNS_ADMIN环境中未定义环境变量,或者进程是没有环境的服务,则 Microsoft Windows 会扫描注册表以查找参数TNS_ADMIN

也可以看看:

6.2?tnsnames.ora 的一般语法

文件的基本语法如例 6-1tnsnames.ora所示。

示例 6-1 tnsnames.ora 文件的基本格式

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS=(protocol_address_information))
   (CONNECT_DATA= 
     (SERVICE_NAME=service_name))) 

在前面的示例中,DESCRIPTION包含连接描述符、ADDRESS协议地址和CONNECT_DATA数据库服务标识信息。

6.3?tnsnames.ora中的多个描述

文件tnsnames.ora可以包含带有一个或多个连接描述符的网络服务名称。每个连接描述符可以包含一个或多个协议地址。示例 6-2显示了两个具有多个地址的连接描述符。DESCRIPTION_LIST定义连接描述符列表。

示例 6-2 tnsnames.ora 中具有多个连接描述符的网络服务名称

net_service_name= 
 (DESCRIPTION_LIST=
  (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)))
  (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-svr)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=hr.us.example.com))))

笔记:

使用 Oracle Connection Manager 时,Oracle Net Manager 不支持为网络服务名称创建多个连接描述符。

6.4?tnsnames.ora 中的多个地址列表

tnsnames.ora文件还支持具有多个地址列表的连接描述符,每个地址列表都有自己的特征。在例 6-3中,给出了两个地址列表。第一个地址列表具有客户端负载平衡和无连接时故障转移功能,仅影响其ADDRESS_LIST.?第二个协议地址列表没有客户端负载平衡,但具有连接时故障转移,仅影响其ADDRESS_LIST.?客户端首先随机尝试第一个或第二个协议地址,然后依次尝试第三个和第四个协议地址。

示例 6-3 tnsnames.ora 中的多个地址列表

net_service_name= 
 (DESCRIPTION= 
  (ADDRESS_LIST= 
   (LOAD_BALANCE=on)
   (FAILOVER=off)
   (ADDRESS=(protocol_address_information))
   (ADDRESS=(protocol_address_information)))
  (ADDRESS_LIST= 
   (LOAD_BALANCE=off)
   (FAILOVER=on)
   (ADDRESS=(protocol_address_information))
   (ADDRESS=(protocol_address_information)))
  (CONNECT_DATA=
   (SERVICE_NAME=service_name)))

笔记:

  • Oracle Net Manager仅支持为连接描述符创建一个协议地址列表。

  • Oracle Net Services 支持文件中的 IFILE 参数tnsnames.ora,最多可进行三层嵌套。该参数手动添加到文件中。以下是语法示例:

    IFILE=/tmp/listener_em.ora
    IFILE=/tmp/listener_cust1.ora
    IFILE=/tmp/listener_cust2.ora 
    

    有关更多信息,?请参阅Oracle 数据库参考。

6.5使用 Oracle 连接管理器进行连接时故障转移和客户端负载平衡

当文件中的连接描述符tnsnames.ora至少包含 Oracle 连接管理器的两个协议地址时,连接时故障转移和负载平衡的参数可以包含在该文件中。

示例 6-4 tnsnames.ora 中的多个 Oracle Connection Manager 地址

此示例说明了多个 Oracle Connection Manager 协议地址的故障转移。

sample1=
 (DESCRIPTION= 
   (SOURCE_ROUTE=yes) 
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))    # 1 
     (ADDRESS_LIST=  
       (FAILOVER=on) 
       (LOAD_BALANCE=off)                               #  2 
       (ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630)) 
       (ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630)))
     (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521)))    #  3
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

在这里,语法执行以下操作:

  1. 指示客户端连接到第一个 Oracle 连接管理器的协议地址,如下所示:

    (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))
  2. 第一个 Oracle 连接管理器被指示连接到另一个 Oracle 连接管理器的第一个协议地址。如果第一个协议地址失败,则尝试第二个协议地址。该序列通过以下配置指定:

    (ADDRESS_LIST=  
      (FAILOVER=on) 
      (LOAD_BALANCE=off)
      (ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630)) 
      (ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630))) 
    
  3. Oracle Connection Manager 使用以下协议地址连接到数据库服务:

    (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521))

示例 6-5 tnsnames.ora 中的客户端负载平衡

此示例说明了两个 Oracle 连接管理器和两个协议地址之间的客户端负载平衡:

sample2=
 (DESCRIPTION= 
   (LOAD_BALANCE=on)                                    # 1
   (FAILOVER=on)
   (ADDRESS_LIST= 
     (SOURCE_ROUTE=yes) 
     (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))    # 2
     (ADDRESS=(PROTOCOL=tcp)(HOST=host2)(PORT=1521)))
  (ADDRESS_LIST= 
     (SOURCE_ROUTE=yes) 
     (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(port=1630)) 
     (ADDRESS=(PROTOCOL=tcp)(HOST=host4)(port=1521)))
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))  # 3

在这里,语法执行以下操作:

  1. 客户端被指示随机选择一个ADDRESS_LIST,如果选择失败则故障转移到另一个ADDRESS_LIST。这由LOAD_BALANCEFAILOVER参数设置为 来指示on

  2. 选择 后ADDRESS_LIST,客户端首先使用 Oracle Connection Manager 协议地址连接到 Oracle Connection Manager,该协议地址使用为 指定的端口 1630?ADDRESS_LIST

  3. 然后,Oracle Connection Manager 使用ADDRESS_LIST.

文章来源:https://blog.csdn.net/a309450028a/article/details/135483165
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。