"linux error: 32: broken pipe" when connecting

oracle on redhat el 3

startup database, listener everything works fine. I have one application that spawns a bunch of threads (15-20) which each create a connection to the database. Some of them run pretty big queries simultaneously, watching the OEM the session count goes up around 50 (parallel processes I'm assuming as my database is partitioned). Inevitably one of the threads fails to aquire a connection with the following message...

TNS-12500: TNS:listener failed to start a dedicated server process
 TNS-12547: TNS:lost contact
  TNS-12560: TNS:protocol adapter error
   TNS-00517: Lost contact
    Linux Error: 32: Broken pipe

if i modify my app to use fewer threads (connections) there's no problem. I'm assuming I've hit some sort of limit, either in oracle or linux. here's a list of some of my initialization params and linux params that I thought were relevant...

open_cursors = 300
processes = 150
sessions = 256
shared_servers = 1
cpu_count = 4
parallel_max_servers = 135
parallel_threads_per_cpu = 4
session_max_open_files = 10

kernel.shmmax = 2147483648
kernel.sem = 250 32000 100 128
fs.file-max = 104844

I saw something on the web about "broken pipe" messages occurring when your listener.log file had reached the 2G limit, but mine's only 20M so that's not the problem. I replaced it anyway to no effect.

One day I will write some connection pooling into my app but I need a fix until then, thanks in advance.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

This problem is in Linux listener
While starting 9i listener


Starting TNS listener fails:

LSNRCTL for Linux: Version - Production on 10-JAN-2003 01:56:09
Copyright (c) 1991, 2001, Oracle Corporation.  All rights reserved.
Starting /u01/app/oracle/product/9.0.1/bin/tnslsnr: please wait...
TNS-12547: TNS:lost contact
 TNS-12560: TNS:protocol adapter error
  TNS-00517: Lost contact
   Linux Error: 32: Broken pipe


OS has the limitation of 2GB file system.
Listener.log was going above 2GB


rename the listener.log to listener.old and restart the listener

simonsta1000Author Commented:
i tried that (read the last line in my question)... thanks anyways...
Or delete LISTENER.LOG file.
You have to clean alert<sid>.log
Price Your IT Services for Profit

Managed service contracts are great - when they're making you money. Yes, you’re getting paid monthly, but is it actually profitable? Learn to calculate your hourly overhead burden so you can master your IT services pricing strategy.

simonsta1000Author Commented:
the listener starts fine, it's when the number of connections increases that I get the error. after the error message the listener continues to run with no problems, as long as the number of connections is low.
If so you have to check the permission on Oracle directories.
May be somebody has changed the permissions.

Please check the permissions on the directories and if find that some of the
directories do not belong to Oracle or another system administrator may have
changed the permissions of the Oracle directories. You correct these and rebuild
the oracle executables with 'relink all'. After this try starting the listener.
You have to increase the number of opened sessions in the SPFILE.
Use OEM.
Also in SQLNET.ORA insert the line:

This will close every 20 minutes the death sessions and so will decrease the opened sessions.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
simonsta1000Author Commented:
the only thing in the oracle directory not owned by oracle:oinstall is a symbolic link at
which maps to

don't see what this has to do with the listener so I don't think this is the problem.

increase the number of opened sessions, do you mean the SESSIONS parameter?

Before running my app, the number of sessions in OEM is down around 2 or 3 so I don't think lingering dead sessions is the problem either. I'll try it though.
Did you install additional software after the Oracle installation?
In Linux (but in Windows also) newly installed products (including firewalls, antiviruses) broke the Oracle
Never install new software on production before backing up the DB - often you will need to deinstall and install again Oracle after this venture.
Changes in Domain are also deadly - I lose OEM 10g this week because of Domain change.
simonsta1000Author Commented:
no changes in domain, no additional software.
I tried increasing SESSIONS parameter to 1024, no change. also put that line in the sqlnet.ora file to no effect. going to try increasing PROCESSES parameter.
simonsta1000Author Commented:
increasing the PROCESSES parameter from 150 to 512 did the trick. I'll leave this question open for a while in case there are some issues that arise, or if anyone has a good reason that I should leave the PROCESSES parameter where it is and try something else.
thanks for your help.
Pay attention to removing of dead session, because every session eats about 5MB RAM. It seems you have too much dead/inactive sessions.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.