TNS-12518、TNS-00517、IBM/AIX RISC System/6000 Error: 32: Broken pipe

0    48    1

👉 本文共约1833个字,系统预计阅读时间或需7分钟。

【故障|监听】TNS-12518、TNS-00517和 Linux Error:32:Broken pipe

前言部分

导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,\~O(∩_∩)O\~:

① Linux Error: 32: Broken pipe的可能原因(重点)

② TNS-12518: TNS:listener could not hand off client connection的一般解决过程

③ SQL*Plus登录报错:ORA-12537: TNS:connection closed

故障分析及解决过程

故障环境介绍

项目source db
db 类型单机
db version11.2.0.3.0
db 存储ASM
OS版本及kernel版本RHEL 6.5

故障发生现象及报错信息

登陆报错:

查监听日志(/u01/app/11.2.0/grid/network/admin/listener.ora),报错如下:

故障分析

潇湘隐者:http://www.cnblogs.com/kerrycode/p/4164838.html

我的解决参考:http://www.itpub.net/thread-1870217-1-1.html

根据MOS: Troubleshooting Guide for TNS-12518 TNS listener could not hand off client connection (文档 ID 550859.1)中,

根据第5条,因为我的grid是11.2.0.1,而Oracle是11.2.0.3的,查询MOS:ORA-12537 / ORA-12547 or TNS-12518 if Listener (including SCAN Listener) and Database are Owned by Different OS User (文档 ID 1069517.1),里边明确指出是由于\$RDBMS_HOME/bin/oracle文件的权限问题导致。

故障解决

\$ORACLE_HOME/bin/oracle文件的权限问题,应该为-rwsr-s--x,属主应该是oracle:asmadmin。

解决办法:

方法:

  1. 修改oracle的权限为6751

  1. 重新用setasmgidwrap设置oracle

重新连接:

故障处理总结

如果可执行文件\$ORACLE_HOME/bin/oracle的属主或权限设定出了问题,那么可能会造成很多问题。例如:无法登陆到数据库、ora-600错误、“TNS-12518: TNS:listener could not hand off client connection”、“Linux Error: 32: Broken pipe”、“ORA-12537: TNS:connection closed”、访问ASM磁盘出错等。解决办法很简单,可以在grid用户下运行setasmgidwrap命令重新配置\$ORACLE_HOME/bin/oracle可执行文件的权限和属主或者直接将oracle文件的权限修改为6751。\$ORACLE_HOME/bin/oracle可执行文件正确属主应该是oracle:asmadmin,并且权限必须有s共享才可以,如下所示:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

问:在UNIX/LINUX环境中,oracle数据库启动后存在许多后台进程和前台进程,虽然相关进程产生一些trace文件也是常有的事情,但是真正是什么决定了oracle相关进程的属性呢?

答:通常来说,oracle的后台进程的调用是依赖于\$ORACLE_HOME/bin/oracle这个二进制文件,但它从远端连入而分配的服务器进程(server process)相关属主的属性则是继承自listener进程,而listener进程的属主属性同样是进程自其启动的用户(分oracle用户和grid用户)\$ORACLE_HOME/bin/oracle的属主属性。

其他原因:

启动ORACLE监听的时候 报错 Linux Error: 32: Broken pipe

原因:原来/home/oracle/product/9.2.0.1.0/network/log/listener.log 文件超过2G,监听就会断掉。

解决办法:清空日志文件

[oracle@localhost oracle]\$ cd \$ORACLE_HOME/network/log

[oracle@chicago log]\$ cat \</dev/null> listener.log

至此问题解决

有个命令可以对这个写日志进行关闭

LSNRCTL> set log_status off

要继续写日志,只需要

LSNRCTL> set log_status on

也可以在 listener.ora 文件里面添加一项

LOGGING_LISTENER = OFF

添加了这个之后无论你怎么重启监听,都不会写日志了。

用到的SQL集合

参考文章

Troubleshooting Guide for TNS-12518 TNS listener could not hand off client connection (文档 ID 550859.1)

ORA-12537 / ORA-12547 or TNS-12518 if Listener (including SCAN Listener) and Database are Owned by Different OS User (文档 ID 1069517.1)

TNS Listener Crash with Core Dump (文档 ID 549932.1)

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

16 − 11 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部