Oracle主机命名与本地服务名称解析


目标:

  描述主机命名与本地服务名称解析之间的区别

  使用 Oracle Net Configuration Assistant 配置:

  主机命名方法

  本地命名方法

  网络服务名

  排除简单连接出现的故障

  要点:

  1.命名方法概览

  客户机应用程序在试图连接数据库服务时,需要借助命名方法将连接标识符解析为连接描述符。

  Oracle Net 提供了五种命名方法:

  主机命名(Host Naming):使 TCP/IP 环境中的用户能够通过其现有名称解析服务来解析名称

  本地命名:使用在每个客户机的 tnsnames.ora 文件中配置和存储的信息查找网络地址

  目录命名:将数据库服务或网络服务名解析为连接描述符,该描述符存储在中央目录服务器中

  Oracle Names:这是由 Oracle Names 服务器系统构成的 Oracle 目录服务,这些服务器可以为网络上的每个服务提供由名称到地址的解析

  外部命名:使用受支持的第三方命名服务

  对于只有几个数据库的小型组织来说,应使用主机命名将名称存储在现有名称解析服务中,也可使用本地命名将名称存储在客户机上的 tnsnames.ora 文件中。

  对于有多个数据库的大型组织来说,应使用目录命名将名称存储在集中管理的符合 LDAP 的目录服务器中。

  2.主机命名

  在下列情况下,客户机可使用主机名来连接服务器:

  使用 Oracle Net Services Client 软件连接 Oracle 数据库服务

  使用 TCP/IP 协议建立客户机与服务器的连接

  主机名通过 DNS 或本地的 /etc/hosts 文件等 IP 地址转换机制来解析

  不使用 “连接管理器” (Connection Manager) 或安全选项等高级功能

  主机命名方法具有下列优点:

  需要的用户配置最少。用户只需提供主机名即可建立连接。

  无需创建与维护本地名称配置文件 (tnsnames.ora)。

  无需了解 Oracle Names 或 Oracle Internet Directory 管理过程。

  主机命名在每个节点上只能标识一个 SID,而使用其它命名方法还可标识其它 SID。

  如果在主机 (hosts) 文件中对多个全局名称设置了别名,让它们指向同一 IP 地址,这样即使这些数据库位于同一节点上,也可使用主机命名连接任意数据库。

  客户端要求

  如果使用主机命名方法,则必须在客户机上安装 TCP/IP 协议。此外,还必须安装 Oracle Net Services 和 TCP/IP 协议适配器。

  主机名通过域名服务 (Domain Name Services, DNS)、网络信息服务 (Network Information Services, NIS) 或集中维护的 TCP/IP 主机文件等 IP 地址转换机制来解析。

  使用主机命名方法之前,必须先对客户端进行如上配置。

  服务器端要求

  如果使用主机命名方法,除了客户机,还必须在服务器上也安装 TCP/IP 协议。此外,需要在服务器端安装 Oracle Net Services 和 TCP/IP 协议适配器。

  在 Oracle8i 和 Oracle9i 中,只要满足以下条件之一就可向监听程序自动注册有关数据库的信息(包括全局数据库名称):

  在端口 1521 上使用 TCP/IP 运行的名为 LISTENER 的缺省监听程序正在运行

  已在初始化文件中设置了 LOCAL_LISTENER 参数

  早期版本中是通过listener.ora文件向监听程序注册数据库信息的。必须静态配置SID_LIST_listener_name段以包含GLOBAL_DBNAME参数。

  全局数据库名称由数据库名称和数据库域名构成。可以从初始化参数文件中的SERVICE_NAMES参数或DB_NAME和DB_DOMAIN参数来获取 GLOBAL_DBNAME 的值。

  主机名必须与在客户机中指定的连接字符串匹配。其它信息还包括要连接的数据库的信息。

  说明:

  主机命名在客户端使用sqlnet.ora文件,在服务器端使用listener.ora文件。

  sqlnet.ora中的NAMES.DIRECTORY_PATH参数确定的是连接时搜寻先后顺序。例如,NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME),

  则先从本地TNSNAMES文件中去找连接时提供的描述符,如果没有发现匹配的,则再去oracle name server上找,

  再没有则使用主机命名方法进行连接——将连接描述符(假定为test)当作一个主机去连接,去该主机上寻找GLOBAL_DBNAME=test的实例(实例名可能不是test)进行连接。

  3.本地命名

  本地命名的优点:

  提供了一种相对简单明了的解析服务名地址的方法。

  对于使用不同协议的各个网络,可跨网络解析服务名。

  可使用图形配置工具轻松配置。

  本地命名方法要求网络服务名存储在 tnsnames.ora 文件中。

  本地命名在客户端使用tnsnames.ora和sqlnet.ora文件,在服务器端使用listener.ora文件。

  在图形化界面中配置网络服务名:

  service name为该数据库服务的service name,一般为db_name.db_domain

  net服务名为按该服务在本地的标识符,相当于别名。

  4.故障排除

  ORA-12154:“TNS:无法解析服务名”

  原因:Oracle Net Services 找不到在 tnsnames.ora 配置文件中指定的连接描述符。

  操作:

  检查 tnsnames.ora 文件是否存在以及是否可访问。

  检查 tnsnames.ora 文件是否位于 TNS_ADMIN 环境变量指定的位置中。

  在 tnsnames.ora 文件中,核实在连接字符串中指定的服务名已经映射为tnsnames.ora文件中的连接描述符。还要核实文件中没有语法错误。

  确认不存在 sqlnet.ora 文件的重复副本。

  如果正从登录对话框连接,则应核实连接服务名前没有 at 符号 (@)。

  ORA-12198:“TNS:找不到指向目标的路径”和ORA-12203:“TNS:无法连接目标”

  原因:客户机找不到所需数据库。

  操作:

  核实已正确输入要连接的数据库的服务名。

  核实 TNSNAMES.ORA 文件的连接描述符中的服务名 ADDRESS 参数是正确的。

  核实 TNSNAMES.ORA 文件已存储在 TNS_ADMIN 环境变量定义的目录中。

  核实远程节点上的监听程序已经启动并正在运行。如果未启动,可使用 “监听程序控制实用程序”启动监听程序。

  如果正从登录对话框连接,则应核实连接服务名前没有 at 符号 (@)。

  ORA-12533:“TNS:ADDRESS 参数非法”

  原因:tnsnames.ora 文件内指定的连接描述符的 ADDRESS 段中的协议特定参数不正确。

  操作:

  有关针对不同协议的关键字的详细信息,请参考适用于平台的 Oracle 操作系统文档。

  ORA-12541:TNS:没有监听程序

  原因:无法与远程节点上的监听程序取得联系。

  操作:

  核实远程节点上的监听程序已经启动。可使用 “监听程序控制实用程序” 的 STATUS 命令检查监听程序的状态。如果需要,还可使用 START 命令启动该监听程序


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3