代码改变世界

TNS-12541: TNS:no listener TNS-12560 TNS-00511: No listener

  潇湘隐者  阅读(28217)  评论(0编辑  收藏  举报

    为了测试需要,系统管理员帮忙将一台ORACLE数据库服务器克隆到虚拟机上,我上去删除了root、oracle、tomcat账号下的crontab定时作业,然后启动了ORACLE数据库实例,删除了ORACLE下的作业,然后启动监听时报如下错误:

[oracle@EGMLNX02 admin]$ lsnrctl stop

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 10-MAR-2014 09:15:44

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=EGMLNX02.egm1.esquel.com)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 2: No such file or directory

检查了监听配置文件listener.ora, 发现没有问题.Google搜索了一下: 这个错误跟Linux的主机名和IP配置有关系,于是赶紧检查:

[oracle@EGMLNX02 admin]$ hostname
EGMLNX02.egm1.esquel.com
[oracle@EGMLNX02 admin]$ more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=EGMLNX02.egm1.esquel.com

image

结果发现主机名和IP配置文件 hosts里面,不知道是系统管理员手误还是其它原因,在hosts文件,127.0.0.1配置里面多了一项EGMLNX02(应该为三项),结果导致ORACLE数据库监听服务器启动报错


关于主机名和IP配置文件,一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址;
第二部份:主机名或域名;
第三部份:主机名别名;

于是修改hosts文件,然后重新启动监听,OK,文件解决了。

编辑推荐:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示