Oracle的配置文件(一)

2014-11-24 11:32:10 · 作者: · 浏览: 0

ORACLE的三个配置文件介绍

概述

在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配置,并且保证监听程序启动,数据库服务加载。

认识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 =

(DEION =

(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_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就报错了。

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

local_dev.com =

(DEION =

(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

这个参数默认没有设置。

认识tnsnames.ora

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

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

local_dev =

(DEION =

(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命令查看。

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

认识listener.ora

tnslsnr进程是监听、并接受远程连接数据库请求的监听进程,listener.ora是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取。

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

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

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

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

下面给出一个简单的示例

listener.ora中的内容:

LISTENER_CSB =

(DEION_LIST =

(DEION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.