在Oracle的 网络 结构中解决连接问题 - 站长资讯 中国站长第一门户:WWW.CHINAHTML.COM网通镜像技术文档CH Blog极 客 集 电信 论坛网通论坛 免费体" name="description" />

在Oracle的网络结构中解决连接问题

发表于:2007-07-04来源:作者:点击数: 标签:
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.d td "> 在Oracle的 网络 结构中解决连接问题 - 站长资讯 中国站长第一门户:WWW.CHINAHTML.COM网通镜像技术文档CH Blog极 客 集 电信 论坛网通论坛 免费体
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 在Oracle的网络结构中解决连接问题 - 站长资讯 中国站长第一门户:WWW.CHINAHTML.COM 网通镜像 技术文档 CH Blog 极 客 集 电信论坛 网通论坛 首页 免费体验美国主机条码条形码打印机文字广告位招租 首页 新闻资讯 搜索优化 推广研究 策划盈利 建站心得 站长故事 商业 人物 门户 报告 评论 网站欣赏 极客集   网页制作 网络编程 数据库 图象媒体 服务器 网络应用 软件教学 产品 新知  安全 开源 访谈 网址大全 实用查询       栏目搜索     标题 简介 内容 作者 搜索全部
搜索全部 新闻资讯 网站运营 网页制作 网络编程 数 据 库 图象设计 服 务 器 网络应用 软件教学 代码下载 工具下载 素材下载 书籍下载 网站欣赏 Flash欣赏         你的位置:首页 > 数 据 库 > 数据库综合 >   在Oracle的网络结构中解决连接问题 日期:2006-10-20 11:49:43  点击:85  作者:  来源:

最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的文档。

首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等。。这里不做讨论,重点放在基本的网络结构也就是我们最常用的这种情况

三个配置文件listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOMEnetworkadmin目录下。

重点:三个文件的作用和使用

sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,

例如我们客户端输入

sqlplus sys/oracle@orcl

假如我的sqlnet.ora是下面这个样子

SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)

那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名

如果我是这个样子

NAMES.DIRECTORY_PATH= (TNSNAMES)

那么客户端就只会从tnsnames.ora查找orcl的记录

括号中还有其他选项,如LDAP等并不常用。

#------------------------

Tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似

NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。

例子中有两个,ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接,一句一句说

#你所要连接的时候输入得TNSNAME

ORCL = (DESCRIPTION = (ADDRESS_LIST =

#下面是这个TNSNAME对应的主机,端口,协议

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA =

#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式

#自动调节

(SERVER = DEDICATED)

#对应service_name,

SQLPLUS>show parameter service_name;

#进行查看

(SERVICE_NAME = orcl) ) )

#下面这个类似

SALES = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sales) ) )

#----------------------

客户端完了我们来看服务器端

listener.ora------listener监听器进程的配置文件

关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。

Listener.ora文件的例子

#listener.ora Network Configuration File: #E:oracleproduct10.1.0Db_2NETWORKADMINlistener.ora # Generated by Oracle configuration tools.

#下面定义LISTENER进程为哪个实例提供服务

#这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME

#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做数据库连接

原文转自:http://www.ltesting.net