Oracle监听配置(一)--监听配置文件

为了使得外部进程如CAMS后台程序能够访问Oracle数据库必须配置Oracle网络服务器环境。配置Oracle网络服务器环境是通过配listener.orasqlnet.ora和tnsnames.ora这三个监听 配置文件,都是放在$ORACLE_HOME\network\admin目录下。
1、sqlnet.ora
其作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。
例如我们客户端输入sqlplussys/oracle@orcl
假如sqlnet.ora的内容如下:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora文件中找orcl的记录。如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址,然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名
如果sqlnet.ora的内容如下:
NAMES.DIRECTORY_PATH=(TNSNAMES)
那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项,如LDAP等并不常用。
2、Tnsnames.ora
这个文件类似于unix的hosts文件,定义一个或多个网络服务net service cams 实例,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH=(TNSNAMES)这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。
HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(forWINDOWS)orifconfig(forUNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。
PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctlstatus[listenername]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。默认端口号为1521。
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
(SERVICE_NAME=orcl)
)
)
#下面这个类似
SALES=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=sales)
)
)
注意:如果数据库服务器用MTS,客户端程序需要用databaselink时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLEBUG。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。
3、listener.ora
该文件是listener监听器进程的配置文件,关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,并且不需要使用OEM时,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
Listener.ora文件的例子
#listener.oraNetworkConfigurationFile:#E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora
#GeneratedbyOracleconfigurationtools.
#下面定义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,端口等,这里使用的tcp协议和1521端口,并且使用的是主机名
LISTENER=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521))
)
上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。
4、监听器的操作命令
$ORACLE_HOME/bin/lsnrctl start,将监听文件中定义的监听器启动起来
停止监听器的命令为
     $ lsnrctl stop
监测监听器当前状态的命令为
     $ lsnrctl status
5、上面说到的三个文件都可以通过图形的配置工具来完成配置
$ORACLE_HOME/netca向导形式的
$ORACLE_HOME/netmgr
本人比较习惯netmgr,
profile配置的是sqlnet.ora也就是名称解析的方式
servicename配置的是tnsnames.ora文件
listeners配置的是listener.ora文件,即监听器进程
具体的配置可以尝试一下然后来看一下配置文件。
这样一来总体结构就有了

CUUG

更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6

你可能感兴趣的:(Oracle监听配置,Oracle监听配置文件)