- Error code
- ORA-03113
- Product
- Oracle Database
- Versions
- Oracle Database 19c, 21c, 23ai and 26ai (same wording in all)
- Category
- Connectivity & Listener
- Last reviewed
- 24 October 2026
On this page
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'); 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; 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; 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 sideThe 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-onlyIf 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-onlyIf 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 configurationFor 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;
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
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
- ORA-03113 (Oracle Database Error Messages)
- Diagnosing and resolving problems (Oracle Database Administrator's Guide 19c)
- V$DIAG_ALERT_EXT (Oracle Database Reference 19c)
- Parameters for the sqlnet.ora file (Net Services Reference 19c)
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.