ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 监听随笔五 本地命名解析

监听随笔五 本地命名解析

原创 Linux操作系统 作者:ad007520 时间:2010-06-21 21:47:38 0 删除 编辑

本地命名解析
local naming是客户端连接服务端的传统方法,特点就是简单易部署。
它通过客户端tnsnames.ora和sqlnet.ora(net8的别名也就sqlnet吧。。这么关系??还有这东西在服务端似乎也有用。。)来部署连接。
tnsnames.ora中定义了服务名、地址、端口(这个跟监听的配置是一样的)以及对应的别名。sqlnet.ora中定义了default domain。
看看语法。。。
#names.default_domain = world
#
#Syntax:  domain-name
#Default: NULL
#
# Indicates the domain from which the client most often requests names. When
# this parameter is set the default domain name (for example, US.ACME), the
# domain name will be automatically appended to any unqualified name in an
# ONAmes request (query, register, deregister, etc). Any name which contains
# an unescaped dot ('.') will not have the default domain appended. Simple
# names may be qualified with a trailing dot (for example 'rootserver.').
#
原先没懂意思。。后面就悲剧了。。
不过还是没懂存在的意义。。找个高手问问。。
通过local naming实现连接的步骤是。。
看实例:
配置文件
---oranames.ora
SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
#NAMES.DEFAULT_DOMAIN=

---sqlnet.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.206.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

执行tnsping
C:\Documents and Settings\Administrator>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 21-6月 -
2010 22:00:10

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

已使用的参数文件:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.
206.129)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl
)))
OK (20 毫秒)

上面都发生什么。。
1、应用或用户进程传递服务名(这里是指sqlnet.ora中定义的别名)给net8(这个我的理解就是一个进程 搭建网络通道)
2、net8查看sqlnet.ora
3、通过别名获取到代连接服务端的address。
清空sqlnet.ora文件试试看。。
还有没有问题
不过更改sqlnet.ora如下
NAMES.DEFAULT_DOMAIN=hello
再一次执行

C:\Documents and Settings\Administrator>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 21-6月 -
2010 22:14:53

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

已使用的参数文件:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

TNS-03505: 无法解析名称

这个问题头大了,回头看看语法。。哦。再GOOGLE一下明白了
当设置NAMES.DEFAULT_DOMAIN时,oracle会自动把domain加在别名后面
不过更改tnsnames.ora如下
ORCL.hello =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.206.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
重新执行。。
O 了 通过
再理顺一下原理
1、应用或用户进程传递服务名(这里是指sqlnet.ora中定义的别名)给net8(这个我的理解就是一个进程 搭建网络通道)
2、net8查看sqlnet.ora  查看names.default_domain的参数值 如果存在则客户端发起连接时会自动附加到别名后 不过如果别名带逗号则会错误 如下
C:\Documents and Settings\Administrator>tnsping orcl.

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 21-6月 -
2010 22:23:50

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

已使用的参数文件:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

TNS-03505: 无法解析名称
3、net8拿别名的全名到tnsnames.ora中校验、获取相应的参数。
4、利用参数可以连接相应的数据库、实例或服务。

它的缺点是:如果你有N多客户端连接同一个数据库或服务,当数据库迁移 ip地址或其他参数更改时  则需要改N多个客户端的配置文件。。很累的。。
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21993926/viewspace-665825/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 监听随笔四
下一篇: 信GOOGLE。。。
请登录后发表评论 登录
全部评论

注册时间:2009-06-28

  • 博文量
    137
  • 访问量
    287976