ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 617|回复: 2

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

[复制链接]
认证徽章
论坛徽章:
10
青年奥林匹克运动会-高尔夫
日期:2014-09-10 14:54:51火眼金睛
日期:2017-02-06 01:02:33人气徽章
日期:2016-11-09 15:56:29目光如炬
日期:2016-10-30 22:00:00罗罗诺亚·索隆
日期:2016-10-17 12:26:14目光如炬
日期:2016-10-16 22:00:00火眼金睛
日期:2016-11-30 22:00:00目光如炬
日期:2017-01-22 22:00:00美羊羊
日期:2015-04-12 10:40:59火眼金睛
日期:2017-02-28 22:00:00
发表于 2017-3-16 14:57 | 显示全部楼层 |阅读模式


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

1.1  BLOG文档结构图
1.2  前言部分1.2.1  导读和注意事项
各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:
① Linux Error: 32: Broken pipe的可能原因(重点)
② TNS-12518: TNS:listener could not hand off client connection的一般解决过程
③ SQL*Plus登录报错:ORA-12537: TNS:connection closed
Tips:
① 本文在itpub([url=]http://blog.itpub.net/26736162[/url])、博客园([url=]http://www.cnblogs.com/lhrbest[/url])和微信公众号(xiaomaimiaolhr)上有同步更新。
② 文章中用到的所有代码、相关软件、相关资料及本文的pdf版本都请前往小麦苗的云盘下载,小麦苗的云盘地址见:[url=]http://blog.itpub.net/26736162/viewspace-1624453/[/url]
③ 若网页文章代码格式有错乱,请下载pdf格式的文档来阅读。
④ 在本篇BLOG中,代码输出部分一般放在一行一列的表格中。
本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。
1.3  故障分析及解决过程
1.3.1  故障环境介绍
项目
source db
db 类型
单机
db version
11.2.0.3.0
db 存储
ASM
OS版本及kernel版本
RHEL 6.5
1.3.2  故障发生现象及报错信息
登陆报错:
[oracle@orcltest ~]$ sqlplus 'sys/"l@h\r/0"'@LHRDB as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 16 12:06:36 2017
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
ERROR:
ORA-12537: TNS:connection closed
查监听日志(/u01/app/11.2.0/grid/network/admin/listener.ora),报错如下:
16-MAR-2017 12:06:36 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=lhrdb)(CID=(PROGRAM=sqlplus)(HOST=orcltest)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.129)(PORT=12333)) * establish * lhrdb * 12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
  TNS-12560: TNSrotocol adapter error
   TNS-00517: Lost contact
    Linux Error: 32: Broken pipe
1.3.3  故障分析
潇湘隐者:[url=]http://www.cnblogs.com/kerrycode/p/4164838.html[/url]
我的解决参考:[url=]http://www.itpub.net/thread-1870217-1-1.html[/url]
根据MOS:Troubleshooting Guide for TNS-12518 TNS listener could not hand off client connection (文档 ID 550859.1)中,
Error: 32: Broken pipe
Error stack in listener log:
TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
   TNS-12560: TNSrotocol adapter error
     TNS-00517: Lost contact
       IBM/AIX RISC System/6000 Error: 32: Broken pipe
Cause:
The error 32 indicates the communication has been broken while the listener is trying to hand off the client connection to the server process or dispatcher process.
Action:
1.  One of reason would be processes parameter being low, and can be verified by the v$resource_limit view.
2. In Shared Server mode, check the 'lsnrctl services' output and see if the dispatcher has refused any connections, if so, then consider increasing the number of dispatchers.
3. Check the alert log for any possible errors.
4. Memory resource is also another cause for this issue. Check the swap, memory usage of the OS.
5. If RAC/SCAN or listener is running in separate home, check the following note:
Note: 1069517.1  ORA-12537 or TNS-12518 if Listener (including SCAN Listener) and Database are Owned by Different OS User
根据第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文件的权限问题导致。
1.3.4  故障解决
$ORACLE_HOME/bin/oracle文件的权限问题,应该为-rwsr-s--x,属主应该是oracle:asmadmin。
解决办法:
方法:
1、修改oracle的权限为6751
[root@orcltest bin]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwxr-s--x. 1 oracle asmadmin 210823844 May 18  2014 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest ~]#  chmod 6751 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest bin]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwsr-s--x. 1 oracle asmadmin 210823844 May 18  2014 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest bin]#
2、重新用setasmgidwrap设置oracle
[root@orcltest bin]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwxr-s--x. 1 oracle asmadmin 210823844 May 18  2014 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest ~]# /u01/app/11.2.0/grid/bin/setasmgidwrap -o /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest bin]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwsr-s--x. 1 oracle asmadmin 210823844 May 18  2014 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest bin]#
[root@orcltest bin]# stat /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
  File: `/u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle'
  Size: 210823844       Blocks: 411776     IO Block: 4096   regular file
Device: 802h/2050d      Inode: 1717737     Links: 1
Access: (6751/-rwsr-s--x)  Uid: (  501/  oracle)   Gid: (  504/asmadmin)
Access: 2017-03-16 11:05:44.809363974 +0800
Modify: 2014-05-18 17:09:50.508549983 +0800
Change: 2017-03-16 12:33:15.733816820 +0800
[root@orcltest bin]#
[root@orcltest bin]#
重新连接:
[oracle@orcltest ~]$ sqlplus 'sys/"l@h\r/0"'@LHRDB as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 16 13:32:48 2017
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SYS@LHRDB>
1.4  故障处理总结
如果可执行文件$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共享才可以,如下所示:
[root@orcltest ~]$ which setasmgidwrap
/u01/app/11.2.0/grid/bin/setasmgidwrap
[root@orcltest ~]$ setasmgidwrap -o /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest ~]$ ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwsr-s--x 1 oracle asmadmin 232399083 Apr 21  2015 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest ~]# ll /u01/app/11.2.0/grid/bin/oracle
-rwsr-s--x. 1 grid oinstall 203972117 Jan  5  2015 /u01/app/11.2.0/grid/bin/oracle
[root@orcltest ~]# chmod 6751 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest ~]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle      
-rwsr-s--x 1 oracle asmadmin 232399083 Apr 21  2015 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@orcltest bin]# cd /u01/app/oracle/product/11.2.0/dbhome_1/bin/
[root@orcltest bin]# which stat
/usr/bin/stat
[root@orcltest bin]# stat oracle
  File: `oracle'
  Size: 210823844       Blocks: 411776     IO Block: 4096   regular file
Device: 802h/2050d      Inode: 1717737     Links: 1
Access: (6751/-rwsr-s--x)  Uid: (  501/  oracle)   Gid: (  504/asmadmin)
Access: 2017-03-16 12:33:44.809363974 +0800
Modify: 2014-05-18 17:09:50.508549983 +0800
Change: 2017-03-16 11:05:15.733816820 +0800
问:在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
添加了这个之后无论你怎么重启监听,都不会写日志了。
1.5  用到的SQL集合
setasmgidwrap -o /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
chmod 6751 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
stat oracle
1.6  参考文章
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)





非常感谢各位朋友支持小麦苗。
论坛徽章:
164
目光如炬
日期:2015-08-09 22:00:01秀才
日期:2015-12-14 14:56:09天枰座
日期:2015-12-02 13:02:15火眼金睛
日期:2015-11-30 22:00:00秀才
日期:2015-11-23 09:48:22目光如炬
日期:2015-11-15 22:00:00目光如炬
日期:2015-11-01 22:00:00目光如炬
日期:2015-11-01 22:00:00狮子座
日期:2016-02-22 15:28:02目光如炬
日期:2015-12-13 22:00:00
发表于 2017-3-16 15:10 | 显示全部楼层
oracle文件的权限是什么原因导致变掉的?出问题之前做过什么操作?

使用道具 举报

回复
认证徽章
论坛徽章:
10
青年奥林匹克运动会-高尔夫
日期:2014-09-10 14:54:51火眼金睛
日期:2017-02-06 01:02:33人气徽章
日期:2016-11-09 15:56:29目光如炬
日期:2016-10-30 22:00:00罗罗诺亚·索隆
日期:2016-10-17 12:26:14目光如炬
日期:2016-10-16 22:00:00火眼金睛
日期:2016-11-30 22:00:00目光如炬
日期:2017-01-22 22:00:00美羊羊
日期:2015-04-12 10:40:59火眼金睛
日期:2017-02-28 22:00:00
发表于 2017-3-16 16:31 | 显示全部楼层
jieyancai 发表于 2017-3-16 15:10
oracle文件的权限是什么原因导致变掉的?出问题之前做过什么操作?

测试库,没有查这么详细了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表