TNS-12537,TNS-12560,TNS-00507 Linux Error: 29: Illegal seek解决
下午有个测试环境测试人员反馈oracle监听起不来,一启动就报错,还生成了core文件。如下:
[oracle@localhost ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-SEP-2018 17:15:37 Copyright (c) 1991, 2009, Oracle. All rights reserved. Starting /home/oracle/product/11.2.0/bin/tnslsnr: please wait... TNS-12537: TNS:connection closed TNS-12560: TNS:protocol adapter error TNS-00507: Connection closed Linux Error: 29: Illegal seek
经查,有下列解决方法:
重新链接oracle如下:
[oracle:test]/bin$ cd /test/oracle/11.2.0.4/bin
[oracle:test]/bin$ ./relink all
未解决。http://tazdba.blogspot.com/2015/07/tns-12537tns-12560tns-00507-solaris.html
/etc/hosts中没有127.0.0.1 hostname条目,增加后,仍然未解决。这一点很多帖子都提到。
sqlnet.ora中添加tcp.validnode_checking=no,仍未解决。http://www.dba-oracle.com/t_linux_error_29_illegal_seek.htm(顺便说下,这个咨询公司最烂了,很早的时候觉得不错,后面觉得太垃圾了,除了抄官方文档,95%的ctrl+c/ctrl+p)。
也有提及将设置LD_BIND_NOW=1,仍未解决。https://stackoverflow.com/questions/15807077/set-ld-bind-now-variable-to-solve-tns-linux-error-29-illegal-seek-error
将listener.ora中的localhost更改为ip或者127.0.0.1,问题解决。但是alert.log中出现一个新的错误:
Mon Sep 03 18:48:56 2018
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x0] [PC:0x2F32692, nttaddr2bnd()+2158] [flags: 0x0, count: 1]
DDE: Problem Key 'ORA 7445 [nttaddr2bnd()+2158]' was completely flood controlled (0x6)
Further messages for this problem key will be suppressed for up to 10 minutes
Mon Sep 03 18:49:28 2018
WARNING: Oracle executable binary mismatch detected.
Binary of new process does not match binary which started instance
issue alter system set "_disable_image_check" = true to disable these messages --这是因为重新链接oracle可执行程序的原因
更改主机名为test-xxx
sqlplus "/as sysdba"
shutdown abort
startup
最后一个错误参考http://blog.itpub.net/18904345/viewspace-1317678/解决。