当前位置:Gxlcms > 数据库问题 > 记一次centos7主机名变bogon导致ORACLE无法远程访问的经历(原创)

记一次centos7主机名变bogon导致ORACLE无法远程访问的经历(原创)

时间:2021-07-01 10:21:17 帮助过:93人阅读

并保存为快照.centos7 ip192.168.44.55,网关192.168.44.2

由于笔记本经常在公司和家之间奔波,连接内网的网关不一样,所以使用虚拟机设置 NAT模式使centos7供外部访问.这样centos7有自己的网关和ip,不用随宿主机内网网关改变.

2. 现象:

有天恢复快照后, ssh登陆centos7 , 用oracle用户正常启用oracle监听和DB.发现能ssh使用,windows端连接则显示错误,ORA-12541:TNS:无监听程序.

这时发现终端变为[root@bogon ~]# , 遂觉得是centos主机名导致的oracle监听出了问题.所以无法远程连接

3.此时环境的各个数据:

[root@bogon ~]# hostname
bogon
[root@bogon ~]# cat /etc/sysconfig/network
# Created by anaconda
[root@bogon ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@bogon ~]# ipcalc -h 192.168.44.55
HOSTNAME=bogon
[root@bogon ~]# nslookup 192.168.44.55
Server:         8.8.8.8
Address:        8.8.8.8#53

55.44.168.192.in-addr.arpa      name = bogon.

[root@bogon ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114
[root@bogon ~]# 
[oracle@bogon admin]$ cat listener.ora 
# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /data/oracle

[oracle@bogon admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oracle)
    )
  )

[oracle@bogon admin]$ 

4.原因分析(参考非原创):

技术分享

还有:

技术分享

即:

1)主机初始化,主机名为localhost或 localhost.localdomain会导致操作系统执行DNS反向解析导致 hostname为bogon.

2)如果resolv.conf中配置了search localdomain或其他不会过滤bogon的DNS服务器,那么此处得到的主机名则优先于hosts和network文件中的配置,使主机名为bogon.

 

5.总结:

1)解决办法1(推荐):更改DNS域名服务器.

由nslookup 192.168.44.55的返回信息,我认为是8.8.8.8这个dns服务器导致.这个域名服务器不会过滤bogon.

遂删除了8.8.8.8 ,并重启网卡 service network restart .

重启终端,发现变为[root@localhost ~]#. 执行hostname命令发现主机名变为localhost.localdomain.

此时启动oracle监听和DB.windows端远程访问正常.

(PS:由参考文献2发现域名服务器如果设置成NAT网关有时也会导致主机名被解析为bogon ,我家里的另外一台电脑域名服务器设置为NAT网关+114.114.114.114暂时centos未出现此问题. )

2)解决办法2:更改主机名

修改文件/etc/hosts,添加了当前服务器的ip和期望的主机名.即添加了一行 192.168.44.55 localhost.localdomain.

重启服务器后,发现主机名变为 localhost.localdomain.,此时oracle监听和DB远程正常访问.

(PS:此时并没有更改/etc/sysconfig/network.实验发现 单独修改/etc/sysconfig/network文件添加HOSTNAME=localhost.localdomain 重启机器后发现主机名仍未bogon.)

3)试错:

开始时,我采用解决办法2 ,即/etc/hosts添加了 一行192.168.44.55 locahost  .因为我此时不知道主机名变为bogo之前是什么.只记得原终端名显示root@localhost.添加后,重启机器,

发现终端为 root@localhost ,执行hostname 发现主机名为localhost. 这时,主机名与oracle listener.ora中的HOST保持一致,启用oracle监听,如下报错:

TNS-12537: TNS:connection closed
 TNS-12560: TNS:protocol adapter error
  TNS-00507: Connection closed
   Linux Error: 29: Illegal seek查询参考资料3发现,是主机名与监听名字不一致,导致oracle启用监听失败.然后,采用解决办法2时,主机名与oracle的tnsname.ora保持一致,oracle监听和DB正常启动,远程访问正常.


6.############参考文献如下 ,感谢作者#############

1) http://blog.csdn.net/weiwan721/article/details/48463371

2) http://www.cnblogs.com/armo/p/6739472.html

3) http://www.cnblogs.com/xing901022/p/3895719.html

 

 

 

记一次centos7主机名变bogon导致ORACLE无法远程访问的经历(原创)

标签:data   wan   dom   names   apt   htm   cat   src   1.0   

人气教程排行