监听名、监听程序、监听配置、监听配置条目、监听点、网络服务名
一、例如如下面名为LISTENER的监听配置:
上面等号的右边整个内容,叫做监听配置(的内容)。上面所有内容,既是一个监听配置。其中, (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 和(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)),叫监听配置条目(所谓监听配置条目,就是“协议+(比如)IP地址+端口号”这个信息)。这里,就有两条监听配置条目。
oracle系统在执行”start A“时,会根据监听名A去查找到listener.ora文件里对应的监听配置,进而创建(并启动)一个同名的监听程序的。
由此,我们看到监听配置、监听程序都有自己的监听名。它们之间通过监听名相互联系在一起的。
注释:
1、 监听程序其实是tnslsnr.exe的一个进程(在unix下)。既然是一个进程,那么停止后,就消失了,即操作系统不保存它在磁盘里的,它只生存在内存上,这个就是进程和程序的区别,程序的一个活动实例就是进程。所以,停止后要重新使用该进程,就需要重新创建。
在window下,监听程序由(写到注册表中相应服务项)监听配置,tnslsnr.exe和服务组成。
2、一个监听程序对应于一个相同监听名的监听配置,两者一一对应。两个监听程序对应的监听配置的内容即使相同,但是两者的监听名不同,那这两个两个监听程序就是两个不同的监听程序。
二、 一个监听配置条目对应于一个监听点,两个内容相同的监听配置条目当然都是对应于同一个监听点。也就是说,每个监听点都有自己的一个监听配置条目,不同监听点间的区别就在于他们的监听配置条目的内容不一样。如果两个不同监听配置里包含一条相同内容的监听配置条目,则两者对应的监听程序就都想要监听同一个监听点。
1、一个监听程序对应的监听配置里有多个监听配置条目,则该监听程序可以监听多个监听点。如下图所示:
2、 一个监听点只能允许被一个监听程序所监听。例如,在监听点a被监听程序A监听后,若启动另一个监听程序B,而这个监听程序B所要监听的监听点里就包含了监听点a,则监听程序B不会被启动,会提示“A已经启动”。如下图所示:
三、网络服务名
网络服务名来自tnsname.ora文件里的内容,由TNSNAME适配器将之解释为连接描述符。网络服务名是属于客户端的一个概念。
例如,下面就是一个网络服务名的配置:
ORCL_LINUX =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.24)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
其中,ORCL_LINUX就是网络服务名。
lsnrctl>start lee //这里的lee为监听程序的意思
该命令执行的过程就是读取在listener.ora文件里同名为lee的监听配置来初始化配置(并创建启动)该名为lee的监听程序。