首页 > Linux操作系统 > Linux操作系统 > 监听随笔五 本地命名解析
本地命名解析
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/ ,如需转载,请注明出处,否则将追究法律责任。