Skip to content
Oracle Database

Oracle Error ORA-03113

end-of-file on communication channel

Applies to: Oracle Database 19c, 21c, 23ai and 26ai (same wording in all)
Last technically reviewed 24 October 2026 on Oracle Database Error Messages reference (26ai, 21c and 19c); not run locally
The full message
ORA-03113: end-of-file on communication channel
Other forms of this message
Followed by (the next call on the same dead connection)
ORA-03114: not connected to ORACLE
Error code
ORA-03113
Product
Oracle Database
Versions
Oracle Database 19c, 21c, 23ai and 26ai (same wording in all)
Last reviewed
24 October 2026

What it means

ORA-03113 means the connection between your client and its database server process broke in the middle of a session, because the instance went down, the server process failed, or the network connection was interrupted.

Every session has a server process on the database side. When the client sends a call and the other end of the connection is suddenly gone, the client reports end-of-file on the communication channel. The message is the same in every release, and it is a symptom: it says the link broke, not why. Oracle's reference lists three reasons: a planned or unplanned outage of the database instance, a fatal error in the server process, or an interrupted network connection.

The evidence is on the server, so Oracle's first action is to check the alert log of the instance for an outage or a process termination (ORA-00600, ORA-07445 or a kill) at the time of the error. The session is lost: any further call on it fails with ORA-03114, so the application has to reconnect, and work that was not committed in that session is not saved.

Common causes

  • The instance was shut down or restarted (planned maintenance, SHUTDOWN ABORT, a failover) or crashed while the session was connected.
  • The server process of the session failed with an internal error such as ORA-00600 or ORA-07445, often while running one particular statement.
  • The server process was killed at operating system level, for example by an administrator or by the system running out of memory.
  • The network connection was interrupted: a dropped VPN or Wi-Fi link, or a network device between client and server that ended the connection.

Diagnose it

Read-only These queries only read the data dictionary (USER_, ALL_ and DBA_ views) and dynamic performance views (V$). They do not change data, privileges or settings, so they are safe to run first. DBA_ and V$ views need the matching privileges.

Find the alert log and trace directories

Run on the database once it is reachable again, as a DBA (V$ views need SELECT_CATALOG_ROLE or a DBA account). The alert log is also readable with the adrci tool (SHOW ALERT).

SELECT name, value
FROM v$diag_info
WHERE name IN ('Diag Alert', 'Diag Trace', 'Diag Incident');
What to look for

The directories of the alert log (log.xml, with a text alert_SID.log in the trace directory), the trace files and incident dumps.

What did the alert log record around the time of the error?

SELECT originating_timestamp, message_text
FROM v$diag_alert_ext
WHERE originating_timestamp > SYSTIMESTAMP - INTERVAL '2' HOUR
  AND message_text LIKE '%ORA-%'
ORDER BY originating_timestamp;
What to look for

An ORA-00600 or ORA-07445 entry (with its incident) points at a server process failure. Without a filter on message_text, the same view also shows shutdown and startup messages, which point at an outage. No errors and no restart suggest the network.

Was the instance restarted?

SELECT instance_name, status, startup_time
FROM v$instance;
What to look for

A STARTUP_TIME later than the ORA-03113 means the instance went down and came back; every session connected before then was lost.

On the client: the Oracle Net log

The client writes Oracle Net errors to its sqlnet.log (in the ADR client directory by default). A network-level error stack there, with no matching entry in the server's alert log, points at the network between the two.

How to fix it

Each fix is labelled with what it changes. Try read-only checks and the least invasive fix first, and test changes outside production.

Reconnect, then check the last transaction

Client or network side

The session cannot be used again: open a new connection. Uncommitted work from the lost session is rolled back. If the error arrived during a COMMIT, the outcome is unknown to the client, so check the data before repeating the work (Transaction Guard can report the outcome where it is configured). Connection pools should validate connections and replace dead ones.

Treat an internal error as the real problem

Read-only

If the alert log shows ORA-00600 or ORA-07445 incidents at the times users got ORA-03113, the fix is for that internal error: note the incident number and the first arguments, search My Oracle Support for them, apply the recommended patch or workaround, and avoid the statement that triggers it in the meantime. Retrying the same statement will usually fail the same way.

After an outage, wait for the instance to open

Read-only

If the instance was shut down or restarted, new connections fail with errors such as ORA-01034 or ORA-12514 until it is open and has registered with the listener. Reconnect once it is back, and agree a maintenance window so planned shutdowns do not surprise users.

Detect broken connections with SQLNET.EXPIRE_TIME

Changes configuration

For connections that keep breaking on the network, check the network path first. On the database server, SQLNET.EXPIRE_TIME = 10 in sqlnet.ora makes Oracle Net check every 10 minutes that client connections are still alive (and, where the platform allows, tune TCP keepalive), so dead connections are detected and cleaned up. It can also be set on clients.

Caution: The probes add a small amount of network traffic, and the check does not work for bequeathed (local) connections. It finds broken connections; it does not repair an unreliable network.

Examples

The instance is shut down while a session is open

Not reproduced here: no Oracle Database is installed for this site. The message text is from Oracle's error reference and is the same in all current releases. A further statement in the same session would report ORA-03114: not connected to ORACLE.

-- session 1, connected earlier
SELECT COUNT(*) FROM shop.orders;

-- meanwhile a DBA runs SHUTDOWN ABORT; session 1 then runs:
SELECT COUNT(*) FROM shop.orders;
Expected result (documented format, not run)
ORA-03113: end-of-file on communication channel

A server process fails on one statement

Not reproduced here: no Oracle Database is installed for this site. The scenario is illustrative: Oracle's reference names a fatal error in the server process (for example ORA-00600 or ORA-07445) as one cause. The client sees only ORA-03113; the internal error, with its incident number, is in the alert log on the server.

SELECT o.id, o.total
FROM shop.orders o
WHERE o.created_at > SYSDATE - 1;
-- the server process hits an internal error
Expected result (documented format, not run)
ORA-03113: end-of-file on communication channel

How to prevent it

Make applications resilient to lost connections: validate pooled connections, reconnect on ORA-03113 and ORA-03114, and keep transactions short so less work is at risk. Announce planned shutdowns and stop applications cleanly before them.

Watch the alert log for ORA-00600 and ORA-07445 so internal errors are found before users report dropped sessions, and keep the database patched. For connections across unreliable networks, consider SQLNET.EXPIRE_TIME so broken connections are detected.

Common questions

How do I fix ORA-03113 end-of-file on communication channel?

Reconnect, then find out why the link broke: check the alert log of the instance around the time of the error for a shutdown, restart or ORA-00600/ORA-07445 incident. If the server shows nothing, investigate the network between client and server.

Is my data lost after ORA-03113?

Committed work is kept. Work that was not committed in the lost session is rolled back. If the error came during a COMMIT, the client cannot tell whether it completed, so check the data before running it again.

What is the difference between ORA-03113 and ORA-03114?

ORA-03113 is reported when the connection breaks during a call. ORA-03114 (not connected to ORACLE) is what you get for any later call on that same broken session. Both mean you need a new connection.

Official documentation

Last technically reviewed 24 October 2026; examples and diagnostics run on Oracle Database Error Messages reference (26ai, 21c and 19c); not run locally. Messages and explanations follow Oracle's Database Error Messages reference; no Oracle Database was available, so the examples were not run locally.

Still stuck on an Oracle error?

Browse the full Oracle error library, or get hands-on help from an experienced SQL professional.