oracle的监听服务详解

oracle的监听服务主要涉及三个文件:服务端文件listener.ora、客户端文件tnsname.ora、sqlnet.ora。三者的默认位置都在: O R A C L E H O M E / n e t w o r k / a d m i n / 下 t n s n a m e . o r a 配 置 文 件 是 一 个 用 于 解 析 名 称 的 客 户 端 文 件 , 服 务 器 上 通 常 有 一 个 副 本 以 便 在 服 务 器 上 运 行 客 户 端 ( s q l p l u s 就 是 客 户 端 ) 。 s q l n e t . o r a 配 置 文 件 是 可 选 的 , 可 能 存 在 于 服 务 端 或 客 户 端 , 它 设 置 的 各 种 默 认 值 会 影 响 所 有 客 户 机 和 服 务 器 。 l i s t e n e r . o r a 配 置 文 件 存 在 于 O r a c l e 数 据 库 服 务 端 , 默 认 位 置 为 : ORACLE_HOME/network/admin/下 tnsname.ora配置文件是一个用于解析名称的客户端文件,服务器上通常有一个副本以便在服务器上运行客户端(sqlplus就是客户端)。 sqlnet.ora配置文件是可选的,可能存在于服务端或客户端,它设置的各种默认值会影响所有客户机和服务器。 listener.ora配置文件存在于Oracle数据库服务端,默认位置为: ORACLEHOME/network/admin/tnsname.ora便sqlplussqlnet.oralistener.oraOracleORACLE_HOME/network/admin/listener.ora。即Oracle服务端需要开启一个监听器来实时监听有哪些客户端来请求连接我服务端,这个监听器的信息配置对应的就是listener.ora文件,此文件中定义了Oracle服务端所需要监听的端口协议以及实例SID。

Oracle配置监听可以使用两种图形化工具:Net Manager和Net Configuration Assistant。下面在Linux环境下结合Net Manager来配置并讲解listener.ora文件。(window环境下大同小异)。
Linux下命令行输入:netmgr 即可调出Net Manager配置工具。如下图所示,Net Manager导航树分为三个分支。Profile分支用于创建或编辑sqlnet.ora文件,用于设置可以应用于Oracle客户端和服务端的选项。Server Naming分支用于在tnsnames.ora文件中篇配置客户端的名称解析。Listens分支用于在listener.ora配置数据库侦听器。现在,首先创建一个监听器:

在这里插入图片描述
选择listens后点击左边的加号,输入监听器的名称保存即可,(此处设置监听器名称为LISTENER),创建了一个监听器就需要配置它,点击LISTENER,默认顶部选择Listening Locations,即必须首先要定义监听哪台主机哪个端口,输入host和port,如上图所示,此处host输入的服务器主机名,建议输入IP地址。此时listener.ora就会创建LISTENER语句:
LISTENER = #监听器名称Lisener,就是NetManager创建的名称
(
DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))
(ADDRESS =……可以配置多个监听地址)
#tcp协议,监听主机oracle11g的端口1521
)

在这里插入图片描述
如上图所示,顶部选择database services
输入Global Database Name 、Oracle Home Directory、SID
即就定义了该监听器要监听的数据库。
Global Database Name 、SID在DBCA创建数据库就定义了,Oracle Home Directory会自己加载/u01/app/oracle/product/11.2.0/db_1。
此时listener.ora就添加SID_LIST_LISTENER该项信息内容,如下所示:
LISTENER = #监听器名称Lisener,就是NetManager创建的名称
(
DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wuhan)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = wuhan)
)
)
注意:SID_LIST+监听器名称为Oracle默认的命名规则,它定义了该LISTENER监听器为哪些数据库实例提供服务,一个监听器可以监听多个数据库实例,需要监听多个数据库实例,只需要在netManager中database services中再添加一个即可。或者直接在SID_LIST 中指定多个SID_DESC即可。

下面讲解tnsnames.ora配置文件。
我们知道,一个工具如plsql或SQL plus需要连接远程或本机的oracle服务器,那么客户端是如何去连接的呢,答案是通过解析字符串去连接的,该字符串定义在tnsnames.ora中。该文件默认位置为:$ORACLE_HOME/network/admin/tnsnames.ora。首先需要配置tnsnames.ora文件。
在这里插入图片描述
如图所示,选择 Service Naming后点击右边+号,这就创建了一个客户端连接字符串,输入Service Name、Host Name、Port Number即可,这时就在tnsname.ora创建了一个连接字符串:
DEP =
(DESCPIRPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))
)
(CONNECT_DATE =
(SERVICE_NAME =dep)
)
)

这样客户端工具SQL plus或远程的plsql就能连接数据库服务器了,也就是说使用sqlplus sa/manager001@dep sqlplus就能知道解析连接dep字符串了,同理评论plsql中database栏就会出现dep数据库了,plsql就会自己去tnsnames.ora中寻找dep字符串来自己解析连接远程数据库了,如下图所示:
在这里插入图片描述
sqlnet.ora文件就不讲了,Net manager 工具的第一个Profile分支就是用来配置sqlnet.ora文件的,它主要包括日志文件的存放位置、客户端连接超时时间等等一个参数。

以上配置文件中出现的host都建议填写IP地址

以上都是在同一台机器上安装的服务端和客户端,那么当客户端与服务端不在同一台机器上时,如何安装的呢?
我们知道。Oracle分为客户端端和服务端,当已经在远程安装后服务端之后,需要在在另外一台电脑上安装客户端+PLSQL DEV工具才能远程连接服务端,注意,PLSQL DEV工具仅仅是一个第三方工具,它并不是Oracle的客户端,如果你仅仅安装了PLSQL DEV工具而没有安装客户端那么是无法连接远程服务端的。

猜你喜欢

转载自blog.csdn.net/MssGuo/article/details/114277847