On my Grid Control management-server (Suse Linux, OMS version 10.2.0.4) a very large number of <defunct> processes arose what eventually caused the OMS not to respond anymore.
Looked like this:
oracle 16932 15961 0 Mar03 ? 00:00:00 [perl] <defunct>
oracle 16987 15961 0 Mar03 ? 00:00:00 [perl] <defunct>
oracle 17027 15961 0 Mar03 ? 00:00:00 [perl] <defunct>
… etc.
The process what caused this appeared to be the iasconsole:
oracle 15961 1 0 Mar03 ? 00:05:10 /software/oracle/product/GC10g/oms10g/perl/bin/perl /software/oracle/product/GC10g/oms10g/bin/emwd.pl iasconsole /software/oracle/product/GC10g/oms10g/sysman/log/em.nohup
Stopping and starting did clean up the defunct-processes, but only temporarily.
Two solutions
1. Not supported by Oracle
, solution contributed by a guy called Seb on the forums (but it works!):
Stop the iasconsole.
- Edit $ORACLE_HOME/bin/IASConsole.pm
- Modify the following line:
from #my $ua = LWP::UserAgent->new(keep_alive=>1);
to my $ua = LWP::UserAgent->new;
- Start the iasconsole.
2. Follow the note 391894.1
- It’s the bug 5504078 Abstract: EMWD.PL SPWANS DEFUNCT PERL PROCESSES AFTER OMS PATCH 10.2.0.2:
The script attempts to locate a file called WINDOWS_NT which on Unix of course does not exist. Consequently a defunct process is created.
- Stop the iasconsole:
emctl stop iasconsole
- cd $ORACLE_HOME/bin
touch Windows_NT
chmod 544 Windows_NT
- Start the iasconsole:
emctl start iasconsole
