oracle中的sqlnet.ora tnsnames.ora listener.ora三个文件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle中的sqlnet.ora tnsnames.ora listener.ora三个文件

2009-11-30 18:20

1、概述

在oracle安装目录$HOME/network/admin下,,经常看到sqlnet.ora tnsnames.ora listener.ora这三个文件,除了tnsnames.ora,其他两个文件详细的用途很多人都不太了解。

sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数. tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。listener.ora 用在oracle server端,配置oracle

服务端程序的监听办法,比如限制某些ip等参数。

在安装目录$HOME/network/admin/samples下,会看到如上上个文件的示例文件,里面会有相关参数的说明和用法,如果遇到什么问题,大家可以对照这些示例文件中相关参数的说明进行解决。

如果连接数据库出了什么问题,在保证网络出正常,没有防火墙干扰的情况下,查找问题的步骤是:

1)在客户端顺序检查sqlnet.ora,tnsnames.ora是有问题。

2)在服务器端检查listener.ora配置,并且保证监听程序启动,数据库服务加载。

2、认识sqlnet.ora

下面只讲述几个常用参数配置,详细的资料,大家可以查看示例sqlnet.ora得到。

sqlnet.ora可以删除,这样在oracle客户端连接数据库的时候,默认采用tnsnames.ora中的配置。

1).NAMES.DEFAULT_DOMAIN

域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"

示例:

sqlnet.ora中:

NAMES.DEFAULT_DOMAIN=com

tnsnames.ora中的tns定义如下:

local_dev =

(DESCRIPTION =

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

(SERVER = DEDICATED)

(SERVICE_NAME = linuxdb)

)

)

在客户端执行命令:sqlplus username/password@local_dev的时候,会出现如下错误信息:

"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。

因为sqlplus username/password@local_dev的时候,将tns别名“local_dev”转换成了“local_”,所以local_在tnsnames.ora中找不到,就报错了。

修改tnsnames.ora中的定义如下:

local_ =

(DESCRIPTION =

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

(SERVER = DEDICATED)

(SERVICE_NAME = linuxdb)

)

)

再执行sqlplus username/password@local_dev,连接成功。

2)NAMES.DIRECTORY_PATH

定义了在客户端连接数据库时,采用什么样的匹配方式。

示例

sqlnet.ora内容如下:

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

那么在客户端执行sqlplus username/password@local_dev连接数据库的时

首先采用tnsnames.ora的别名配置连接数据库;如果连接上;

再采用ONAMES进行解析,最后采用主机名进行解析;

ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;

HOSTNAME表示使用host文件,DNS,NIS等来解析;

3)SQLNET.AUTHENTICATION_SERVICES

定义登录数据库的认证方式。

NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用。

可以设置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先后顺序表明验证

的优先方式。

示例

sqlnet.ora内容如下:

SQLNET.AUTHENTICATION_SERVICES=(NONE)

在命令行上执行如下命令:

sqlplus "/ as sysdba"时,执行失败。

提示错误信息ORA-01031: insufficient privileges

这个参数默认没有设置。

3、认识tnsnames.ora

提供了客户端连接某个数据库的详细信息,主机地址,端口,数据库实例名等。

下面给出一个示例来说明问题:

local_dev =

(DESCRIPTION =

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

(SERVER = DEDICATED)

(SERVICE_NAME = linuxdb)

)

)

PROTOCOL参数一般是TCP,可以根据服务器情况选择一种配置方式。

HOST 一般是ip地址,也可以是主机名,这个主机名字只要能用ping hostname 通就行,一般在客户端系统的host文件上配好主机名和ip地址的映射关系。ORT 标准是1521,根据服务器端的监听端口而定。S

ERVICE_NAME 就是数据库的服务名,用system用户登陆后,sqlplus> show parameter service_name命令查看。

这个配置文件平时大家都用得比较多,一般人都会,相信不会有太大问题。

4、认识listener.ora

tnslsnr进程是监听、并接受远程连接数据库请求的监听进程,listener.ora

是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取。

该文件位于服务端,如果只安装oracle客户端,一般不存在这个文件。

如果你只需要在本地连接数据库,不接受远程连接,那么也不需要启动tnslsnr 进程,也不需要去维护listener.ora文件。

启动监听进程的命令,在命令模式下,执行lsnrctl start命令就启动了监听进程tnslsnr。

监听可以有多个,也就是说,可以同时监听多个oracle实例,可以在listener.ora中定义多个监听器进行监听。

下面给出一个简单的示例

listener.ora中的内容:

LISTENER_CSB =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

相关文档
最新文档