诡异的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端口,问题未现;重启数据库,监听自动注册。故障排除。
这个问题说明是由于日志太大无法写入导致数据库监听无法正常启动,建议手工定时清空数据库日志文件,以避免此类问题发生。
prudentwoo 10g/11g OCP 11g OCM,ITPUB和CSDN专家及专家讲师;有着多年数据库从业经验,资深Oracle数据库专家,现就职于北京海量数据技术股份有限公司担任高级dba职务,为央视,银行,电信等各行业及企业提供过技术支持服务
相关文章
- PL/SQL- ora-12154 '' TNS:could not resolve the connect identifier specified'
- Linux中Oracle启动侦听报错TNS:permission denied的解决方法
- Oracle报错ORA-12516 TNS:listener could not find available handler with matching protocol stack
- sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact
- Oracle TNS 异常问题处理
- listener TNS-01189 问题
- oracle里的tns是什么意思
- ORA-12162: TNS:net service name is incorrectly specified 错误解决
- oracle 错误 TNS-01190与oracle 登入没反应操作
- 造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?
- 【故障•监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe
- Oracle 启动失败报错“TNS-12555: TNS:permission denied”解决办法
- ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
- TNS-12541,TNS-12560,TNS-00511,TNS-12542,TNS-12560,TNS-00512数据库启动监听报错
- 登录RMAN 报告ORA-12162:TNS:net service name is incorrectly specified错
- Oracle 11gR2 RAC 数据库不能连接(ORA-12537: TNS:connection closed)
- Oracle 11gR2 RAC 数据库不能连接(ORA-12537: TNS:connection closed)的解决
- ORA-12537:TNS:connectionclosed错误处理过程
- ORA-12537:TNS:连接关闭 -------数据库最大连接数问题
- ORA-12537:TNS连接已关闭
- TNS-12537,TNS-12560,TNS-00507 Linux Error: 29: Illegal seek解决
- linux配置tns
- TNS-03505 名称无法解析
- Windows 平台监听程序无法启动 报TNS-12560 TNS-00530
- Archiver Failing With Ora-12571: Tns:Packet Writer Failure (文档 ID 1143523.1)
- TNS-12537, TNS-12560,TNS-00507 Linux Error: 29: Illegal seek error
- ORA-12154 和 TNS-03505 监听错误的解决方法
- Ora-12547: Tns:Lost Contact Creating Database After Clean Installation