ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 深入理解监听(sqlnet.ora,tnsnames.ora,listener.ora)

深入理解监听(sqlnet.ora,tnsnames.ora,listener.ora)

原创 Linux操作系统 作者:happy8650 时间:2011-09-05 15:14:47 0 删除 编辑

sqlnet.ora,tnsnames.ora,另外还有listener.ora,都是放在$ORALCE_HOME\network\admin目录下。

sqlnet.ora用在oracle client端,用于配置连接服务端oracle的相关参数.

tnsnames.ora用在oracle client端,用户配置连接数据库的别名参数

listener.ora用在oracle server端,配置oracle服务端程序的监听参数

sqlnet.ora类似于操作系统的/etc/netsvc.conf文件,里面对解析的优先顺序进行编排

tnsname.ora类似于操作系统的/etc/hosts文件,本地将TNS名解析为目标IP地址及Service-Name

listener.ora类似于操作系统的/etc/services文件,里面定义了监听的端口、服务名等

1.1.1. sqlnet.ora(客户端)

通过这个文件来决定怎样找一个连接中出现的连接字符串。例如我们客户端键入

sqlplus test/test@orcl,如果sqlnet.ora是下面这样:

NAMES.DEFAULT_DOMAIN = localdomain

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

&说明

NAMES.DEFAULT_DOMAIN指定网络域名。

NAMES.DIRECTORY_PATH指定当解析客户端连接标识符时命名方法(naming metthods)采用的优先顺序从左至右递减在CAMS应用中。

这两个参数采用上述所示的系统缺省值。

示例文件:

# sqlnet.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to

# install "Software Only", this file wont exist and without the native

# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME, ONAMES)

SQLNET.AUTHENTICATION_SERVICES= (NTS)

这个表示采用OS认证,在数据库服务器上,可以利用sqlplus / as sysdba

一般这个配置在windows上是ok的,在unix环境下可能会有问题,一般在unix下可以去掉这个配置。

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)

表示将首先利用tnsnames进行解析;如果tnsnames解析不到,将使用hostname通过网络的途径解析IP;如果hostname解析不到,将采用onames进行解析;例如我们客户端输入:sqlplus test1/test1@test,那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.

如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的IP地址然后去连接这个IPglobal_name=test这个实例,当然我这里orcl并不是一个主机名。

10gNAMES.DIRECTORY_PATH增加了EZCONNECT。使用EZCONNECT必须满足以下要求:

1.oracle net servieces 10g必须安装在客户端

2.客户端以及服务器必须支持TCP/IP,并启用

3.不允许高级连接描述特性,如:连接池

方法示例:connect scott/tiger@hostname:port/servicename

ORA-12514一个很常见的原因是NAMES.DIRECTORY_PATH漏了TNSNAMES,可能是Oracle Net Configuration时少选了Oracle Names选项。

1.1.2. Tnsnames.ora客户端

这个文件放在客户端机器上,记录客户端访问数据库的本地配置,其实就是定义网络服务,只有当sqlnet.ora中有"NAMES.DIRECTORY_PATH= (TNSNAMES)"这样的字样时,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。

示例文件:

# TNSNAMES.ORA Network Configuration File: D:\oracle\fullOracle\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

test_link = //网路服务名

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 108.108.108.108)(PORT = 1521))

//访问数据库使用的协议,数据库计算机的主机名或IP地址,数据库的端口号

)

(CONNECT_DATA =

(SID = test) //数据库实例名

(SERVER = DEDICATED)

(SERVICE_NAME = test)

)

)

protocol一般为TCP,HOST可以为IP,可以是可Ping的通的主机名,Service_Name = orcl是服务器的SIDServer = ?可分为共享服务器和专用服务器两种体系结构。共享服务器依靠调度程序服务处理来自客户端的连接请求,单个调度程序可以同时为多个客户机连接提供服务。而专用服务器进程不要求客户端共享任何资源,一个session启动一个process

1.1.3. listener.ora(服务器端)

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

  

Listener.ora文件的例子

#listener.ora Network Configuration File: #E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora

# Generated by Oracle configuration tools.

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

#这里是ORCL,并且它对应的ORACLE_HOMEGLOBAL_DBNAME

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

SID_LIST_LISTENER =

(SID_LIST = //这里定义LISTENER进程为哪个实例提供服务

(SID_DESC =

(GLOBAL_DBNAME = boway)

(ORACLE_HOME = E:\oracle\product\10.1.0\Db_2)

(SID_NAME = ORCL)

)

)

#监听器的名字,一台数据库可以有不止一个监听器

#再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使#用的是主机名

LISTENER =

(DESCRIPTION =

ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521)) //监听器监听的协议,IP,端口等

)

  

上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。

 

文章来源:http://space.itpub.net/22957140/viewspace-706371

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

上一篇: PL/SQL概念
请登录后发表评论 登录
全部评论

注册时间:2009-05-17

  • 博文量
    7
  • 访问量
    11250