Monday, April 9, 2012

TNS-12547: TNS:lost contact and Linux Error: 32: Broken pipe

Problem: client connection failed if use service_name in TNSNAMES.ORA and succeeds if use SID.

environment: Oracle runs against os user oracle and asm runs against os user grid. Lisner runs against grid.


error in listener log:

TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 32: Broken pipe


cause: @ORCLE_HOME/bin/oracle permission was set incorectly.

solution: chmod 6751 @ORCLE_HOME/bin/oracle

analyzation: when connect with sid, the listener use shared server method, wiich not require listener to start a new process trhough @ORCLE_HOME/bin/oracle . when connect with service name, the listener user dedicated server method, which require os user grid to start an OS user oralce process through @ORCLE_HOME/bin/oracle. since sticky bit was not set up for group permission of @ORCLE_HOME/bin/oracle, listerner can not start up dedicated server process for new connection, which give the linux error: broken pipe.


reference: ORA-12546 or ORA-12537 While Connecting To Database Via Listener [ID 1050756.6]

No comments:

Post a Comment