您的位置:首页 > 数据库 > Oracle

谈谈Oracle服务器端Admin和客户端Admin文件夹的几个配置文件(tnsnames.ora,sqlnet.ora,listener.ora)

2018-02-01 14:12 951 查看
在安装Oracle服务器产品时,默认会安装Oracle服务器端程序和客户端程序,路径一般如下:“E:\app\lenovo\product\11.2.0\dbhome_1”和“E:\app\lenovo\product\instantclient_11_2”。而这两个路径下,均有“NETWORK\Admin”文件夹,下面的几个文件完全一样,都包括tnsnames.ora,sqlnet.ora,listener.ora三个文件,用于存放了客户端连接服务器的一些配置参数。这几个文件到底作用是什么?对于客户端和服务器而言是不是都是必须的?通过查阅一些资料,分析如下:

在安装了Oracle之后,一般会在Windows的path在环境变量中增加服务器和客户端的两个安装路径,应用程序可能通过这些路径去寻找对应的Oracle相关程序,在我自己的电脑上的安装路径为:

服务器:E:\app\lenovo\product\11.2.0\dbhome_1\bin

客户端:E:\app\lenovo\product\instantclient_11_2

还可以用TNS_ADMIN指定tnsnames.ora的路径,如:

E:\app\lenovo\product\instantclient_11_2\NETWORK\ADMIN

服务器端

listener.ora:listener监听器进程的配置文件。listener接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。(这时候,只需更改认证方式为为windows认证即可)。

一台数据库服务器可以有不止一个监听器。

Listener.ora文件的例子

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = boway)

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

(SID_NAME = ORCL)

)

)

Listener.ora文件配置好之后,需要重新启动监听器,以便于重新读取参数。主要命令如下:

lsnrctl start

lsnrctl stop

lsnrctl status

客户端

在客户端中只需要tnsnames.ora和sqlnet.ora两个配置文件即可,不需要listener.ora(这个文件是服务器上的)。

通过测试发现:sqlnet.ora文件不是必须的,但Tnsnames.ora文件必须,在NETWORK\ADMIN文件夹下只有Tnsnames.ora,也能正常连接和启动。

sqlnet.ora

sqlnet.ora作用:sqlnet.ora这个文件用于配置网络连接时所使用的连接方式等,比如SQLNET.AUTHENTICATION_SERVICES= (NTS),就是说可以以windows的本地操作系统用户认证登录,此外还有none(不允许通过os系统用户登录数据库,需要提供用户名及密码),all(允许所有的登录方式)。如果没有的话,默认是windows验证。

The sqlnet.ora is an optional file expressing more parameters about the

connection (eg: the trace level for debugging, the types of authentication you

would like to support and so on).It may be found on the client or the server.

SQLNET.AUTHENTICATION_SERVICES= (none)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsnames.ora

客户端是通过这个这个文件中描述的信息去与服务器上的监听器进行连接。格式如下:

ORCL111 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = lenovo-PC)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。

HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在 hosts文件中加入数据库侦听所在的机器的机器名的解析。

PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。

SERVICE_NAME:如上面的orcl,在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。

ORCL111:对应的本机的连接字符串。

注意SERVICE_NAME = orcl 的“orcl”是远程服务器的oracle服务名;ORCL111是客户端连接的时候,出现的服务名,这个是可以自己改的,进行数据库连接”conn 用户名/密码@服务名”的时候,服务名应该是ORCL111,而不是orcl,如conn 用户名/密码@ORCL111。

当你输入sqlplus sys/Oracle@orcl111的时候,客户端和服务器端的通讯过程如下:

1.查询sqlnet.ora看看名称的解析方式,发现是TNSNAME。

2.则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name。

3.如果listener进程没有问题的话,建立与listener进程的连接。

4.根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。

5.这时候网络连接已经建立,listener进程的历史使命也就完成了。

Oracle均有图形化的工具对其进行配置

Oracle Net Manager:提供了界面对客户端的tnsnames.ora,sqlnet.ora文件的配置方式。

Net Configuration Assistant:可以对客户端网络服务名tnsnames.ora,listener.ora进行配置。

几种连接用到的命令形式

1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程

2.sqlplus sys/Oracle 这种连接方式只能连接本机数据库,同样不需要listener进程

3.sqlplus sys/Oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。

以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。

init.ora中的Remote_Login_Passwordfile对身份验证的影响

三个可选值:

NONE:

默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限

EXCLUSIVE:

1.表示只有一个数据库实例可以使用密码文件

2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户

SHARED:

1.表示可以有多个数据库实例可以使用密码文件

2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户

所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: