listener.ora 、sqlnet.ora 、tnsnames.ora

服务端开Listener,侦听客户请求,转发到你的实例,客户端配Tnsnames,给出服务的描述,连接到服务端的侦听。
Listener.ora是只用于服务器,客户端中的无效。
TNSNAME.ora只用于客户端,服务端无效,除非服务器需要连接其它服务端。
客户端的TNSNAME.ora是负责找到相应的主机。
Listener.ora管理客户端的连接。
Oracle三个配置文件 listener.ora 、sqlnet.ora 、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin 目录下。 
 
1. 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 等并不常用。 
 
2. Tnsnames.ora------ 这个文件类似于unix 的hosts 文件,提供的tnsname 到主机名或者ip 的对应,只有当sqlnet.ora 中类似 
NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES 是,才会尝试使用这个文件。  
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 :在服务器端,用system 用户登陆后,sqlplus> show parameter service_name 命令察看。 
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 = dg1)(PORT = 1521)) 

(CONNECT_DATA = 
(SERVER = DEDICATED) 
(SERVICE_NAME = sales) 

)  
注意:如果数据库服务器用MTS ,客户端程序需要用database link 时最好明确指明客户端用dedicated 直连方式, 不然会遇到很多跟分布式环境有关的ORACLE BUG 。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000 。 
 
3. listener.ora------listener 监听器进程的配置文件  
关于listener 进程就不多说了,接受远程对数据库的接入申请并转交给oracle 的服务器进程。所以如果不是使用的远程的连接,并且不需要使用OEM时,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_HOME 和GLOBAL_DBNAME 其中GLOBAL_DBNAME 不是必需的除非 
# 使用HOSTNAME 做数据库连接 
SID_LIST_LISTENER = 
(SID_LIST = 
(SID_DESC = 
(GLOBAL_DBNAME = boway) 
(ORACLE_HOME = /u01/app/oracle) 
(SID_NAME = ORCL) 

)  
# 监听器的名字,一台数据库可以有不止一个监听器 
# 再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使#用的是主机名 
LISTENER = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521)) 
)  
上面的例子是一个最简单的例子,但也是最普遍的。一个listener 进程为一个instance(SID) 提供服务。 
监听器的操作命令 
$ORACLE_HOME/bin/lsnrctl start, 其他诸如stop,status 等。具体敲完一个lsnrctl 后看帮助。 
 
上面说到的三个文件都可以通过图形的配置工具来完成配置 
$ORACLE_HOME/netca 向导形式的 
profile 配置的是sqlnet.ora 也就是名称解析的方式 
service name 配置的是tnsnames.ora 文件 
listeners 配置的是listener.ora 文件,即监听器进程linux
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值