诡异的TNS-12541:TNS:nolistener

                                         诡异的TNS-12541:TNS:nolistener

 

OS:Microsoft Windows 2003 EnterPrise
Database:Oracle Database EnterPrise 11.2.0.1
内存:1G

         2013年8月13日,是个特殊的日子,这天天空很蓝,城市的各个角落飘散着玫瑰花的香味,那是一个令人陶醉的日子,正享其中的时候,突然来了个电话,所有的一切的一切都泡汤了,全无了。

         一客户现场工程师打电话过来,说数据库连不上了,监听起不来了,被告知报错TNS-12571:TNS:包写入程序失败,通过查询Metalink文档,让其修改$ORACLE_HOME/network/admin/SQLNET.ora文件,添加SQL.NET.AUTHENTICATION_SERVICES= (NONE),后重启监听,结果无效。

        约2个小时后,我来到用户现场;检查发现并没有报TNS-12571错误,而是报的TNS-12541:TNS:nolistener的错误,这个错误很明显就是监听没起来或是无法启动。随即手工起监听程序,结果发现起不来,报TNS-12541错误,应该可以判断是监听配置文件的问题,故检查后重建监听。

        更加怪异的是,重建监听也无效,还是报TNS-12541错误,而且启动过程非常慢,随即我查看了硬件配置,和数据库的参数配置,虽然比较低,但也不至于数据库能起来,监听起不来呀,随后检查端口,发现存在1521端口,说明监听是起来的,这个时候,我手工shutdown 数据库,停止数据库所有服务。再次查看,发现还是存在1521的端口在线,开始猜测本机除了数据库还有其它应用在占用着1521端口,随即修改监听默认端口,改为152,再次重启监听,还是一样报TNS-12541:TNS:nolistener;通过查看端口,152端口不存在,确定监听是没有起来的。

        这个时候再猜测,估计是内存间通信导致;要正确判断这个问题,就是将相关服务都禁用掉,把服务器重启,再经用户的同意之后,重启服务器,检查当前服务器的存活端口,没有1521端口,这判断1521端口没有被其它自启动软件占用,故再次启动监听,还是报同样错误:TNS-12541:TNS:no
listener;这个时候就纳闷了,监听日志大小达到4G,无法打开,当然就无法分析。

       但是我注意到一个细节,就是我怎么操作监听服务,listener日志大小都不变,这个时候我将listener.log日志文件剪切到桌面,重新在原目录下创建同名的listener.log文件,并赋予Everyone写入权限,再次启动监听,这个时候没有报错,启动速度非常快。而且这个新建立的listener.log文件也记录监听的启动信息,没有问题;随后将监听端口修改为默认的1521端口,问题未现;重启数据库,监听自动注册。故障排除。

这个问题说明是由于日志太大无法写入导致数据库监听无法正常启动,建议手工定时清空数据库日志文件,以避免此类问题发生。

时间: 2024-08-01 22:34:57

诡异的TNS-12541:TNS:nolistener的相关文章

TNS - 12516 TNS : 解决

报错 TNS - 12516 TNS : listener could not find instance with matching protocol stack   根据官方的文档说是processes和sessions参数设置的问题.已经达到了最大值.索引监听拒绝连接,这个时候监听例程是blocked的,确实如此如下: 服务 "libaodb" 包含 1 个例程.   例程 "libaodb", 状态 READY, 包含此服务的 1 个处理程序...    

TNS-12535: TNS:operation timed out案例解析

一数据库突然连接不上,在自己电脑上使用SQL Developer也连接不上.立即使用SecureCRT连接上了这台服务器,从下面几个方面检查.   1:检查了数据库的状态是否正常 $ sqlplus / as sysdba   SQL*Plus: Release 10.2.0.5.0 - Production on Mon May 16 11:07:55 2016   Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.     Conn

使用SQLTools工具怎么访问我本地的Access数据库,怎么配置TNS

问题描述 使用SQLTools工具怎么访问我本地的Access数据库,怎么配置TNS 学习数据库ing,想用SQLTool访问本地的Access文件,应该怎么连接,如果用TNS,TNS应该配置在哪个地方,怎么配置. 解决方案 是dsn吧http://zhidao.baidu.com/link?url=5IhNdNkdgqNiii-cL8A3hQADwEaaI2ntylzuYnJCxUeN_9fJV4ZuaJZXqHn40K8JU3c2bG5RzDhxbrEwOLjAEq 解决方案二: http:

TNS-12541问题

TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 今天是2014-06-17,遇到一个非常奇怪的问题,可能之前测试修改监听的原因,导致监听启动后自动关闭,特此记录一下整个处理过程, 监听配置文件信息如下: [oracle@dg1 admin]$ more listener.ora # listener.ora Network Configurat

Oracle数据库配置错误信息

oracle|错误|数据|数据库     Oracle数据库配置错误信息     Oralce数据库的错误信息经常会出现,我们看见的都是错误的代码,至于错误原因究竟是什么还一时半会难以解答,所以就把一些常见的错误整理了一下,来看看也许对你有帮助的.1.   Oracle客户端网络配置:          在Oralce产品安装完成后,为了与数据库服务器进行连接或者是两台数据库之间进行数据复制,则必须进行网络连接配置.          Oracle9i Net Service配置方法:     

nusoap-用php的NuSoap 访问webservice遇到的问题。

问题描述 用php的NuSoap 访问webservice遇到的问题. 下了0.9.5版本的nusoap,访问java开发的webservice接口,结果一直都连不上,帮忙看一下是什么问题.谢谢.程序报错:Errorwsdl error: XML error parsing WSDL from http://192.168.102.126:8080/eos-default//eos-default/LoginManager on line 32: EntityRef: expecting ';'

NuSOAP webservice接口

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService.它是一个开源软件,是完全采用PHP语言编写的.通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://dietrich.ganx4.com/nusoap/  )开发.NuSOAP的一个优势是不需要扩展库的支持,这种特性使得NuSoap可以用于所有的PHP环境,不受服务器安全设置的影响. 1. 首先,去 http://sourceforge.net/proj

JavaScript利用NativeScript调用原生API实现跨平台(移动端)

NativeScript NativeScript是一个运行环境,可以让你使用通用的JavaScript代码,打造原生的iOS,Android和Windows(即将推出)应用程序. NativeScript有很多很酷的功能,比如支持JavaScript对象双向绑定到原生UI组件,以及用CSS为原生应用程序写样式.但我最喜欢的功能是NativeScript可以让您直接访问本地平台的原生API. 注* 可以理解为NativeScript是一个JavaScript V8运行环境的命令转发代理,将Jav

SVC0901

问题描述 调用电信的接口发送短信时,总是报这个错误,这个ip地址不知道是怎么得来的,非常着急啊,哪位大牛看看问题所在啊,万分感谢!!!!=======<tns:RequestSOAPHeaderxmlns:tns="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1"><tns:spId>20100323</tns:spId><tns:spPassword>D4B4B5BE71A7

ORACLE错误一览表 方便查询_oracle

ORACLE错误一览表,方便大家查询! ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-000