监听总结之1.“正在连接到”后面跟着的内容受哪些因素影响(同名不同配置)

问题的引出:

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

最终结论:

       每次进入lsnrctl工具的环境时,lsnrctl工具都会自动读取一次listener.ora文件里的全部内容(当然包括SID_LIST_监听名这个部分的内容)存到内存上。此后,在未退lsnrctl工具的环境前,status、stop、start这三命令在执行到“正在连接到”这一步时,都是使用上述的内容,无论进入lsnrctl工具的环境后,listener.ora文件里的内容是否有变化,都不影响。虽然“start   A”命令执行启动监听程序这一步时,是要重新读取一次listener.ora文件里与监听名A相关的内容的(“监听:”这部分的内容就是证明)。但是,“正在连接”后跟着的内容又还是进入lsnrctl工具环境时读取listener.ora的内容。因为虽然start命令执行启动监听程序这一步时,是要重新读取一次listener.ora文件里与监听名A相关的内容的但是它不会去更新先前进入lsnrctl工具环境时从listener.ora文件读取到内存上的内容。


实验证明如下:

      开始时,在listener.ora里没有一个叫做CUN的监听名。

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10月-2013 22:1
2:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

欢迎来到LSNRCTL, 请键入"help"以获得信息。


LSNRCTL>status CUN

TNS-01101:无法找到服务名称CUN

LSNRCTL>quit


接着,在退出lsnrctl工具环境后,在文件listener.ora中加入监听名为CUN的监听配置:

CUN   = 
  (DESCRIPTION_LIST = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1523))        //监听配置条目2
    ) 
  )

之后,再进入lsnrctl工具环境再status  CUN,查看status的执行结果

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10月-2013 22:1
2:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

欢迎来到LSNRCTL, 请键入"help"以获得信息。


LSNRCTL>status CUN

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)
))

TNS-12541: TNS:无监听程序

TNS-12560: TNS:协议适配器出现错误

TNS-00511: 无监听程序


LSNRCTL> start CUN

启动tnslsnr: 请稍候...


TNSLSNR for 32-bit Windows: Version 10.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 = 192.168.0.30)(PORT = 1523)


正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)
))
LISTENER 的 STATUS
------------------------
别名                      CUN
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  22-10月-2013 22:22:26
正常运行时间              0 天 0 小时 0 分 34 秒
跟踪级别                  off
安全性                    ON: Local OS 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 = 192.168.0.30)(PORT = 1523)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "cool" 包含 1 个例程。
  例程 "too", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

实验说明:

在文件listener.ora中没有加入监听名为CUN的监听配置时 进入lsnrctl工具环境后,status CUN,

提示“TNS-01101:无法找到服务名称CUN”。因为此时在文件listener.ora中没有监听名为CUN的监听配置。

在退出lsnrctl工具环境后,在文件listener.ora中加入监听名为CUN的监听配置。之后,再进入lsnrctl工具环境再status  CUN,查看status的执行结果里,有这么一句话:正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)))。这句话里的监听配置信息哪里来?当然是从文件listener.ora里读取到内存上的。



      那如何证明进入lsnrctl工具的环境后,无论listener.ora文件里的内容是否有变化,都不影响“正在连接到”后面跟着的监听配置的内容?

实验证明如下:

      开始时,在文件listener.ora中有一个监听名为CUN的监听配置:

CUN   = 
  (DESCRIPTION_LIST = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1523))        //监听配置条目2
    ) 
  )

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10月-2013 22:1
2:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

欢迎来到LSNRCTL, 请键入"help"以获得信息。

LSNRCTL> start CUN

启动tnslsnr: 请稍候...


TNSLSNR for 32-bit Windows: Version 10.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 = 192.168.0.30)(PORT = 1523)


正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)
))
LISTENER 的 STATUS
------------------------
别名                      CUN
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  22-10月-2013 22:22:26
正常运行时间              0 天 0 小时 0 分 34 秒
跟踪级别                  off
安全性                    ON: Local OS 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 = 192.168.0.30)(PORT = 1523)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "cool" 包含 1 个例程。
  例程 "too", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功


LSNRCTL>status CUN

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)
))
LISTENER 的 STATUS
------------------------
别名                      CUN
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  22-10月-2013 22:22:26
正常运行时间              0 天 0 小时 0 分 34 秒
跟踪级别                  off
安全性                    ON: Local OS 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 = 192.168.0.30)(PORT = 1523)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "cool" 包含 1 个例程。
  例程 "too", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功



接着,(没有退出lsnrctl工具环境)在文件listener.ora中修改监听名为CUN的监听配置为:

CUN   = 
  (DESCRIPTION_LIST = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.59)(PORT = 1525))        //监听配置条目2
    ) 
  )


之后,再查看status CUN

LSNRCTL>status CUN

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)
))
LISTENER 的 STATUS
------------------------
别名                      CUN
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  22-10月-2013 22:22:26
正常运行时间              0 天 0 小时 0 分 34 秒
跟踪级别                  off
安全性                    ON: Local OS 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 = 192.168.0.30)(PORT = 1523)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "cool" 包含 1 个例程。
  例程 "too", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

我们发现,两次的 status CUN的结果都是: 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.30)(PORT = 1523)

就是配置未变化。

接着,在退出lsnrctl工具环境后,,再进入lsnrctl工具环境再status  CUN,查看status的执行结果

LSNRCTL>quit

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10月-2013 22:1
2:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

欢迎来到LSNRCTL, 请键入"help"以获得信息。


LSNRCTL>status CUN

正在连接到 (DESCRIPTION= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.59)(PORT = 1525))
))

TNS-12541: TNS:无监听程序

TNS-12560: TNS:协议适配器出现错误

TNS-00511: 无监听程序


重新进入后,“正在连接到”后监听配置内容改了。


另见《监听总结之“正在连接到”里的内容选谁以及同名不同配置选谁(*)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值