rhawkes has asked for the wisdom of the Perl Monks concerning the following question:

Hi there guys,

I am attempting to run an SQL statement that uses a view to a database link. However, I get a nasty error:

ORA-03113 end-of-file on communication channel

This leaves me completely clueless! Do any of you guys know a setting that I might be missing?

Thanks
Richard

Replies are listed 'Best First'.
Re: DBI Oracle 03113 Error
by Fletch (Bishop) on May 03, 2005 at 14:39 UTC

    Try enabling tracing on the handle ($sth->trace( 2 ); see perldoc DBI for more details like sending trace output to a file) and see if that produces anything enlightening.

Re: DBI Oracle 03113 Error
by dragonchild (Archbishop) on May 03, 2005 at 14:59 UTC
    The error generally means that one of the communication channels was dropped. Have you, perchance, googled the error?

    The Perfect is the Enemy of the Good.

Re: DBI Oracle 03113 Error
by chanakya (Friar) on May 04, 2005 at 05:30 UTC
    ORA-03113 is a catch-all error message, similar to ORA-00600 but less useful. It means that something went wrong, and Oracle doesn't know what.

    Following are some steps on how to check the reason behind the problem.

    1. As it turns out, the most common reason is that the Oracle shadow process on the server died unexpectedly. So, if a running process were to suddenly encounter an ORA-03113 and/or 3114, the first place to check is the alert.log on the server to see if any other Oracle errors occurred.

    2. Next most common cause of ORA-03113 is that the SQL*Net driver was not linked into the Oracle executable on Server. While the listener successfully received the connection and passed it to the Oracle shadow process, the shadow process would fail to respond in any way because it would not know how to. So the client will see an ORA-03113 at connect time.

    3. Third most common cause is a machine crash or network failure at the server side.

    4. ORA-03113 has also been noticed where the a TOKEN RING card has the Shared RAM size set to 8KB rather than 16KB. If you are using a TOKEN RING card check the shared buffer size and try increasing it.

    5. ORA-03113 also occurs when INIT.ORA parameters CONTEXT_AREA and CONTEXT_INCR are set to a value of 4096. Increasing the value to 8192 resolves the 3113. (RDVMS V6 only)

    6. ORA-03113 also occurs when there are duplicate IP addresses on the network. To find the duplicate addresses turn off the unit that is getting the 03113 and ping its IP address. If the ping responds then you have to find the offending unit.

    7. If an ORA-03113 error occurs intermittentlly on comparatively large select statements, try setting the default buffer size to 4096, especially if issuing an order by causes no problems but going through Q&E or SQR hangs the machine.

    ORA-03113 is just a symptom of a larger problem that will require more diagnosis to track down. Hopefully, the above information will lead you in the right direction to find the solution.

    To debug an ORA-03113, it is a good idea to attempt the same operation while doing a loopback, i.e can any tool on the server connect using the same connect string as they specify from the Desktop client? If the same problem occurs doing a loopback, then you know the problem resides on the server side and not on the Desktop client side.

    To perform a loopback invoke SQLPLUS or SQLDBA from the server, and at the SQLPLUS or SQLDBA prompt on the server type: CONNECT USERNAME/PASSWORD@t:/:

    !!@!!
    May the force be with you
Re: DBI Oracle 03113 Error
by Transient (Hermit) on May 03, 2005 at 19:09 UTC
    Try also looking for Oracle generated trace (.trc) files on the filesystem. Could be some nasty internal error (I speak from first-hand experience :)