关于监听的总结(监听配置里的host部分只能使用主机名吗,用IP地址或localhost不能正确启动监听程序吗?)

来源:互联网 发布:centos nginx 目录 编辑:程序博客网 时间:2024/05/17 22:19

第一部分:

lsnrctl工具下的三个命令,分别是status、stop、start。

我们从三个命令执行后在屏幕上显示的结果来看,可以发现一个共性,就是都有“正在连接到”这句话 。

而且status和start两个命令在“正在连接到”这句话 之后的要显示的内容(基本)是一样的。

还有start执行后在屏幕上显示的结果的开头部分有“启动tnsctl。。。。。监听:”的字样,说明它先是(如果该监听程序原先不存在的话,就会先创建再)启动一个监听程序。

由此,可以看出三个命令里都是分步执行的。


status 监听名A(指的是程序 ,这里)   :是先连接到“正在连接到”后面的监听配置所对应的监听程序上,之后再显示(status)该监听程序的状态信息。

stop  监听名B   :是先连接到“正在连接到”后面的监听配置所对应的监听程序上,之后再停止(stop)该监听程序。

提示:如果所连接的监听程序未启动,则这两个命令的执行结果就会提示“无监听程序”。


start 监听名C   :是先检查是否已经有叫“监听名C”的监听程序启动了,启动了,该命令就会再往下执行,并提示“已有监听名C的监听程序启动”。如果未启动,则再启动监听名C的监听程序。最后,在连接到该监听名C的监听程序(也就是“正在连接到”后面的监听配置所对应的监听程序)上,执行和status最后一步一样的步骤,即显示该监听程序的状态信息。

在进入lsnrctl工具环境时,lsnrctl工具会一次性读取listener.ora文件上的所有内容到内存上,在未退出lsnrctl工具环境前,执行任何命令(start命令除外),都不会再次读取listener.ora文件上的内容,所以在未退出lsnrctl工具环境前,无论listener.ora文件上的内容是否有改变或是干脆将listener.ora文件删除或是移走,都不会影响lsnrctl工具里命令的执行结果。

除非,例如在进入lsnrctl工具环境后,start监听名A,再status监听名A。之后,退出lsnrctl工具环境。然后,修改监听名为A的监听配置。之后,再重新进入lsnrctl工具环境,status监听名A,则提示“无监听程序”,因为此时执行status时连接到的修改配置后的监听程序,而该程序未启动。未修改前的配置的监听程序仍是处于启动状态的。这样,就会影响lsnrctl工具里命令的执行结果。会影响命令执行结果。

status和stop


start区别于status与stop的地方:

status和stop执行时,都不会重新读取listener.ora文件的内容。但是start则会重新读取listener.ora的内容。执行时,都不会重新读取listener.ora文件的内容

执行时,都不会重新读取listener.ora文件的内容listener.ora文件上的内容listener.ora文件上的内容会影响lsnrctl工具里命令的执行结果。会影响lsnrctl工具里命令的执行结果。会影响lsnrctl工具里命令的执行结果。会影响lsnrctl工具里命令的执行结果。会影响lsnrctl工具里命令的执行结果。


=================================================================================

 

第二部分:


 

监听配置里的host部分只能使用主机名吗,用IP地址或localhost不能正确启动监听程序吗?


1、start stop status时都有 “正在连接到”这句话 ,

比如,

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

正在连接到(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = WIN-7GVKUTPOB47)(PORT = 1521)))

 

当“正在连接到”这句话为正在连接到(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = WIN-7GVKUTPOB47)(PORT = 1521)))

无论在listener.ora文件里的host值为什么值,该句里host值,oracle软件自动都会改为主机名的

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
     ) 
     (SID_DESC =
      (SID_NAME = too)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (GLOBAL_DBNAME = cool)
     ) 
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-7GVKUTPOB47)(PORT = 1521))
    )
  )

 

 

 

2、名为listener的监听配置若在listener.ora文件里没有,也是没事的。(开发时)oracle软件程序里就有一个常量变量,就是默认值,也是名为listener的一个监听配置。oracle软件自动用该监听配置来初始化配置名为listener监听程序。当然,在listener.ora文件里的名为listener的监听配置优先级要高,即它存在的话就用它来初始化配置名为listener监听程序。还有一点说明,就是oracle软件是用同名的监听配置来初始化配置(启动)同名的监听程序,例如,用名为A的监听配置来初始化配置(启动)同名为A的监听程序。

lsnrctl>start  lee   //这里的lee为监听程序的意思

该命令执行的过程就是读取在listener.ora文件里同名为lee的监听配置来初始化配置(并创建启动)该名为lee的监听程序。

 

===================================================================================================================================

 

 第三部分:

 

listener.ora文件里,如名为listener的监听配置如下:

LISTENER =

 (DESCRIPTION_LIST =

   (DESCRIPTION =

     (ADDRESS = (PROTOCOL = TCP)(HOST =WIN-7GVKUTPOB47)(PORT = 1521))

    )

 (DESCRIPTION =

     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

)

即同时存在(ADDRESS = (PROTOCOL = TCP)(HOST =WIN-7GVKUTPOB47)(PORT = 1521))(ADDRESS = (PROTOCOL =IPC)(KEY = EXTPROC1))两个信息,

则在正在连接到这句话里的内容为(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))),也就是说协议为IPC(PROTOCOL=IPC)(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))信息会优先放在正在连接到这句话里,无论这两个信息在listener.ora文件里的先后顺序如何。

 

下面例子验证:

 

listener.ora文件里,如名为listener的监听配置如下:

LISTENER =

 (DESCRIPTION_LIST =

   (DESCRIPTION =

     (ADDRESS = (PROTOCOL = TCP)(HOST =WIN-7GVKUTPOB47)(PORT = 1521))

    )

 (DESCRIPTION =

     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

)

 

 

 

 

LSNRCTL> start

启动tnslsnr: 请稍候...

 

TNSLSNR for 32-bit Windows: Version10.2.0.1.0 - Production

系统参数文件为C:\oracle\product\10.2.0\db_1\network\admin\listener.ora

写入C:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息

监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-7GVKUTPOB47)(PORT=1521)))

 

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

LISTENER STATUS

------------------------

别名                     LISTENER

版本                      TNSLSNRfor 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期                  17-10-201320:55:45

正常运行时间              0 0小时 0 6

跟踪级别                  off

安全性                    ON: LocalOS Authentication

SNMP                      OFF

监听程序参数文件         C:\oracle\product\10.2.0\db_1\network\admin\listener.o

ra

监听程序日志文件         C:\oracle\product\10.2.0\db_1\network\log\listener.log

 

监听端点概要...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-7GVKUTPOB47)(PORT=1521)))

服务摘要..

服务 "PLSExtProc"包含 1个例程。

  例程"PLSExtProc",状态 UNKNOWN,包含此服务的 1个处理程序...

服务 "cool" 包含 1 个例程。

  例程"too",状态 UNKNOWN,包含此服务的 1个处理程序...

命令执行成功

LSNRCTL> status

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNRfor 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期                  17-10-2013 20:55:45

正常运行时间              0 0小时 0 18

跟踪级别                  off

安全性                    ON: LocalOS Authentication

SNMP                      OFF

监听程序参数文件         C:\oracle\product\10.2.0\db_1\network\admin\listener.o

ra

监听程序日志文件          C:\oracle\product\10.2.0\db_1\network\log\listener.log

 

监听端点概要...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-7GVKUTPOB47)(PORT=1521)))

服务摘要..

服务 "PLSExtProc"包含 1个例程。

  例程"PLSExtProc",状态 UNKNOWN,包含此服务的 1个处理程序...

服务 "cool" 包含 1 个例程。

  例程"too",状态 UNKNOWN,包含此服务的 1个处理程序...

命令执行成功

LSNRCTL> stop

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

命令执行成功

 

 

 

 

 

listener.ora文件里,如名为listener的监听配置如下:

 

LISTENER =

 (DESCRIPTION_LIST =

   (DESCRIPTION =

       (ADDRESS = (PROTOCOL= IPC)(KEY = EXTPROC1))

    )

 (DESCRIPTION =

(ADDRESS = (PROTOCOL =TCP)(HOST = WIN-7GVKUTPOB47)(PORT = 1521))

)

 

 

LSNRCTL> start

启动tnslsnr: 请稍候...

 

TNSLSNR for 32-bit Windows: Version10.2.0.1.0 - Production

系统参数文件为C:\oracle\product\10.2.0\db_1\network\admin\listener.ora

写入C:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-7GVKUTPOB47)(PORT=1521)))

监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

 

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNRfor 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期                  17-10-201320:57:12

正常运行时间              0 0小时 0 6

跟踪级别                  off

安全性                    ON: LocalOS Authentication

SNMP                      OFF

监听程序参数文件          C:\oracle\product\10.2.0\db_1\network\admin\listener.o

ra

监听程序日志文件         C:\oracle\product\10.2.0\db_1\network\log\listener.log

 

监听端点概要...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-7GVKUTPOB47)(PORT=1521)))

 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

服务摘要..

服务 "PLSExtProc"包含 1个例程。

  例程"PLSExtProc",状态 UNKNOWN,包含此服务的 1个处理程序...

服务 "cool" 包含 1 个例程。

  例程"too",状态 UNKNOWN,包含此服务的 1个处理程序...

命令执行成功

LSNRCTL> status

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNRfor 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期                  17-10-2013 20:55:45

正常运行时间              0 0小时 0 18

跟踪级别                  off

安全性                    ON: LocalOS Authentication

SNMP                      OFF

监听程序参数文件         C:\oracle\product\10.2.0\db_1\network\admin\listener.o

ra

监听程序日志文件          C:\oracle\product\10.2.0\db_1\network\log\listener.log

 

监听端点概要...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-7GVKUTPOB47)(PORT=1521)))

服务摘要..

服务 "PLSExtProc"包含 1个例程。

  例程"PLSExtProc",状态 UNKNOWN,包含此服务的 1个处理程序...

服务 "cool" 包含 1 个例程。

  例程"too",状态 UNKNOWN,包含此服务的 1个处理程序...

命令执行成功

LSNRCTL> stop

正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

命令执行成功

LSNRCTL>

 

 

 

 

附加:

正在连接到这句话为正在连接到(DESCRIPTION=(ADDRESS = (PROTOCOL =TCP)(HOST = WIN-7GVKUTPOB47)(PORT = 1521)))

无论在listener.ora文件里的host值为什么值,该句里host值,oracle软件自动都会改为主机名的