监听总结之5.服务端和客户端的解析问题

实验环境:win7、oracle 11gR2
解析问题:
一、客户端的解析问题
     我们发现,tnsping localhost时,localhost会解析成127.0.0.1。但是,tnsping 主机名 时,主机名不会被解析成127.0.0.1。此时,解析使用的是EZconnect适配器。
     客户端,连接时用到的主机名或是localhost,是由客户端这边的EZconnect适配器或是TNSNAME适配器来解析成ip地址的。
     详见:
监听总结之解析问题二:由sqlnet.ora文件寻到EZCONNECT适配器程序来解析主机名为主机上的多个ip地址(*) 以及 tnsping是用来测试某个配置的监听程序是否启动
监听总结之解析问题一:由sqlnet.ora文件寻到TNSNAME适配器程序来解析网络服务名为它的具体配置(×)

二、服务端的解析问题
实验前的说明:
1、本实验都是在同一个主机上进行,未进行远程连接操作。hosts文件里内容为空。
2、因为怀疑监听程序
分别为 具有动态监听功能只有静态监听功能时可能对实验有影响,所以在两种情况进行了相同实验。
3、本实验的过程就是:
       start A  之后退出lsnrctl工具环境。退出lsnrctl工具环境 后,修改文件listener.ora中监听名为A的监听配置里的host值。接着再进入lsnrctl工具环境再status A,查看 status的执行结果 重复本过程十二次。

实验的结果:

start

   startus

Status执行结果

主机名

192.168.0.30(本机实际ip地址)

执行成功

Localhost

执行成功

127.0.0.1

执行成功

 

 

Localhost

192.168.0.30(本机实际ip地址)

提示“无监听程序”

主机名

提示“无监听程序”

127.0.0.1

执行成功

 

 

192.168.0.30(本机实际ip地址)

主机名

提示“无监听程序

Localhost

提示“无监听程序”

127.0.0.1

提示“无监听程序”

 

 

127.0.0.1(环回地址)

192.168.0.30(本机实际ip地址)

提示“无监听程序”

Localhost

执行成功

主机名

提示“无监听程序”

 

 

注释:
       本实验在监听程序 分别为 具有动态监听功能只有静态监听功能时进行过相同实验,结果一致。
       不过,其实也不必怀疑监听程序 是否 具有动态监听功能 这个因素质的影响,因为本实验只是涉及服务端的解析问题,未涉及客户端的连接问题。
实验的结论总结:
2.0
首先,我们从实验的结果里提取以下结果:

start

   startus

Status执行结果

127.0.0.1(环回地址)

192.168.0.30(本机实际ip地址)

提示“无监听程序”

Localhost

192.168.0.30(本机实际ip地址)

提示“无监听程序”

192.168.0.30(本机实际ip地址)

127.0.0.1(环回地址)

提示“无监听程序”

我们发现,三个执行结果都是提示“无监听程序”,这是因为192.168.0.30和 127.0.0.1两个ip地址不同,所以对应的监听点也不同,不是在同一个位置的,故而status命令所连接到的监听点不是start命令启动的监听点,最终因此而提示“无监听程序”。

2.1“正在连接”时的解析问题
       

 我们从实验的结果里提取以下结果:

start

   startus

Status执行结果

主机名

192.168.0.30(本机实际ip地址)

执行成功

Localhost

执行成功

127.0.0.1

执行成功

 

start

   startus

Status执行结果

127.0.0.1(环回地址)

主机名

提示“无监听程序”

Localhost

提示“无监听程序”

192.168.0.30(本机实际ip地址)

提示“无监听程序”

 


start

   startus

Status执行结果

127.0.0.1(环回地址)

Localhost

执行成功

Localhost

127.0.0.1(环回地址)

执行成功


对第二和第三个表格的内容,做如下解释:
        “正在连接”后的内容里,若host为主机名或是localhost时, oracle系统没有调用自己的解析进程,而是先查看(window下的)hosts文件里是否有相应的域名解析条目。没有的话,则若是host为localhost,因为操作系统里默认设置是localhost 对应于环回ip地址(127.0.0.1)的,所以 oracle系统就认为 localhost解析为 环回ip地址(127.0.0.1)若是host为 主机名可能还会启用DNS软件来进行域名解析。
          具体实验证明如下:
              初始条件:hosts文件里内容为空。
        首先,我们发现,
start 主机名  之后退出lsnrctl工具环境,接着再进入lsnrctl工具环境 ,分别status 本机实际IP地址、 status环回IP地址(127.0.0.1)status localhost。 结果三个都执行成功。反之, start 本机实际IP地址   之后退出lsnrctl工具环境,接着再进入lsnrctl工具环境 status  主机名。结果提示“无监听程序”。类似地,分别用 start 环回IP地址(127.0.0.1)、 start  localhost替代 start 本机实际IP地址 进行实验,结果也是如此。
      接着,我们在hosts文件里写上“ 127.0.0.1    主机名”  这一域名条目。之后,重新开始实验:
        start 环回IP地址(127.0.0.1)   之后退出lsnrctl工具环境,接着再进入lsnrctl工具环境 status  主机名。结果 执行成功。
        这就说明“正在连接”后的内容里,若host为主机名时, oracle系统会查看(window下的)hosts文件里是否有相应的域名解析条目。
      综上所述,表格二里,status 主机名,全部失败,是因为主机名得不到解析成ip地址。表格三里,statuslocalhost,执行成功,是因为 localhost得到解析成ip地址。 其具体过程:hosts文件为空时,oracle系统某个进程就会调用操作系统底层的让localhost与::1(IP6形式的环回ip地址)对应的函数。


2.2  启动监听程序时的解析问题

我们从实验的结果里提取以下结果:

start

   startus

Status执行结果

主机名

192.168.0.30(本机实际ip地址)

执行成功

Localhost

执行成功

127.0.0.1

执行成功


对表格内容,做如下解释:
          服务端,也有自己的解析进程(具体不清楚),应该是oracle自己开发的,非操作系统上的DNS解析软件。
      怎么可以证明
服务端也有自己的解析进程呢?
      可以用status命令查看一个具有动态监听功能且它的监听配置里的host
为主机名的监听程序,在 status的显示结果,看下“监听端点概要”这个部分的内容,可以发现,有三条配置信息:host分别为主机名、主机实际ip地址、环回ip地址。这个就说明,oracle系统将 监听配置里host的主机名解析成了主机实际ip地址、环回ip地址。
      当然,一个只有静态监听功能且它的监听配置里host值为主机名的监听程序,oracle系统也会将该监听程序的监听配置里值为主机名的host解析为对应的Ip地址的。只是用status命令查看
监听程序时, “监听端点概要”里,除了一条配置信息:host分别为主机名,其他两条未显示而已。那怎么知道其他两条的存在呢?

      证明方法一,使用start+status:

       start A之后退出lsnrctl工具环境,接着再进入lsnrctl工具环境
,分别status 本机实际IP地址、 status环回IP地址(127.0.0.1)status 主机名。结果三个都执行成功,说明都三条配置信息都在。

           证明方法一,使用start+status:

       start  A之后(是否退出lsnrctl工具环境,不影响实验),
再分别(在本机上进行)tnsping 本机实际IP地址、 tnsping 环回IP地址(127.0.0.1) 。结果都执行成功,说明都三条配置信息都在。
  

         总之,若是 有一个监听配置里host值为主机名的监听程序, oracle系统里的解析进程就会将该监听程序的监听配置里值为主机名的host解析为对应的Ip地址,不管监听程序具有动态监听功能还是只有静态监听功能
     另外, 不管监听程序具有动态监听功能还是只有静态监听功能,status localhost时,“监听端点概要”里,显示的 配置信息都是host为环回ip地址(127.0.0.1)


附加:
1、

2.1“正在连接”时的解析问题  里为什么觉得与DNS功能是否开启有关?因为 看到如下事实:
ping  localhost
来自::1回复

127.0.0.1  localhost 对应  ,但是hosts文件为空内容。

2、DNS客户端 、注册  主机名、DNS服务在服务管理器  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值