- Error code
- ORA-12560
- Product
- Oracle Database
- Versions
- Oracle Database 19c, 21c, 23ai and 26ai (wording differs: see below)
- Category
- Connectivity & Listener
- Last reviewed
- 24 October 2026
On this page
What it means
ORA-12560 means a lower-level communication layer under Oracle Net failed (the protocol adapter for TCP, IPC or the local connection), so the real cause is in the rest of the error stack or, on Windows, very often an Oracle database service that is not running.
Oracle Net sends every connection through a protocol adapter: TCP or TCPS for network connections, IPC or a bequeath connection for local ones. ORA-12560 is the generic report that this layer failed. Oracle's reference asks you to look at the error stack for the lower-level transport error, to check the protocol specification in the address, and to turn on tracing if that is not enough. On its own the code says little; the lines around it say what went wrong.
The procedure for TNS-12560 and ORA-12560 in Oracle's Net Services troubleshooting guide (19c) is written for Microsoft Windows: make sure the OracleServiceSID Windows service is enabled and started. That matches the most common case: sqlplus / as sysdba on a Windows server where the database service is stopped. A local connection with no connect identifier goes to the instance named by ORACLE_SID (or the connect identifier in the Windows LOCAL parameter), so that has to name an instance that is running.
Common causes
- On Windows, the OracleServiceSID service for the instance is stopped or disabled, so local connections have nothing to talk to.
- ORACLE_SID is not set, or names a different instance from the one that is running, for a local connection such as sqlplus / as sysdba.
- The ADDRESS in tnsnames.ora or the connect descriptor has an incorrect protocol specification or parameters.
- A lower-level network or operating system error, which appears further down the error stack (for example a no-listener entry such as TNS-00511).
- Operating system or Oracle Net resource limits, which Oracle lists as able to cause the same conditions as ORA-12540 and ORA-12549.
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.
Read the whole error stack
ORA-12560 is usually one line of several. The client writes the full stack to its sqlnet.log (in the ADR client directory by default; the trace and log locations are in the Net Services guide). The lowest entries, such as TNS-00511 No listener or an operating system error, name the actual problem.
Windows: are the Oracle services running?
Run on the database server in PowerShell. The database service is named OracleService followed by the SID.
Get-Service -Name 'Oracle*' | Format-Table Name, Status, StartType -AutoSize OracleServiceSALES with Status Running. Stopped or a StartType of Disabled explains ORA-12560 for local connections. The listener service is listed separately.
Which instance does a local connection go to?
# Windows (cmd)
echo %ORACLE_SID%
reg query HKLM\SOFTWARE\ORACLE /s /v ORACLE_SID
# Linux and UNIX
echo $ORACLE_SID The SID of the instance whose service is running. An empty value, or a SID of another (stopped) instance, means sqlplus / as sysdba tries the wrong one.
Check the protocol in the address
tnsping SALESDB The descriptor shown after "Attempting to contact" must use a valid PROTOCOL (TCP, TCPS or IPC) with the matching parameters: HOST and PORT for TCP and TCPS, KEY for IPC.
Separate the local path from the network path
If a network connection to the same database works while the local one fails, the database is up and the problem is the local environment (service, ORACLE_SID or Oracle home).
sqlplus shop@//localhost:1521/salespdb.example.com A successful login over TCP while sqlplus / as sysdba fails with ORA-12560 points at ORACLE_SID or the Windows service.
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.
Start the Oracle database service on Windows
Changes database stateOracle documents starting it from the Services dialog or with NET START OracleServiceSID. If the service is disabled, enable it first (Oracle's troubleshooting guide does this through MSCONFIG; the Services dialog works too). If the service does not exist at all, Oracle says to create it with ORADIM.
Caution: Starting the service makes the instance available again; check that it was not stopped on purpose for maintenance or a restore.
# Windows (cmd), elevated
NET START OracleServiceSALES
# or PowerShell, elevated
Start-Service -Name OracleServiceSALES
Point local connections at the right instance
Client or network sideSet ORACLE_SID in the session before a local connection, as Oracle's Windows guide does when several instances run on one machine.
# Windows (cmd)
SET ORACLE_SID=SALES
sqlplus / as sysdba
# Linux and UNIX
export ORACLE_SID=SALES
sqlplus / as sysdba
Correct the protocol address
Client or network sideFix the ADDRESS in tnsnames.ora so the protocol and its parameters match what the listener uses (lsnrctl status lists them as listening endpoints).
(ADDRESS = (PROTOCOL = TCP)(HOST = sales-server)(PORT = 1521))
# a local IPC address uses a KEY instead of HOST and PORT
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
Trace the connection when the stack is not enough
Client or network sideOracle's action for ORA-12560 is to turn on network tracing, repeat the operation and turn tracing off again. Add the trace parameters to the client sqlnet.ora, reproduce once, then remove them.
Caution: Trace files grow quickly and can contain connection details; switch tracing off (TRACE_LEVEL_CLIENT = OFF) as soon as you have reproduced the error, and treat the files as sensitive.
# client sqlnet.ora, temporarily
# levels: OFF, USER, ADMIN, SUPPORT; with ADR (the default) the trace
# goes to the client's ADR trace directory
TRACE_LEVEL_CLIENT = SUPPORT
Examples
A local SYSDBA login on Windows with the database service stopped
Not reproduced here: no Oracle Database is installed for this site. The result is the 19c and 21c wording from Oracle's error reference, which is what most Windows installations still print; current releases print "ORA-12560: Database communication protocol error." The scenario follows the Windows remedy in Oracle's Net Services troubleshooting guide (enable and start OracleServiceSID).
C:\> sqlplus / as sysdba
ORA-12560: TNS:protocol adapter error
ORA-12560 as one line of a deeper stack
Not reproduced here: no Oracle Database is installed for this site. The stack is illustrative: each entry is a documented Oracle message, but the exact lines (and any operating system error added below them) vary by platform and release. Here the protocol adapter error only reports that the lower layer found no listener, so the fix is the one for ORA-12541.
lsnrctl status
TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener
How to prevent it
On Windows servers, set the Oracle database and listener services to start automatically and check them after every reboot or patch. On machines with several Oracle homes or instances, set ORACLE_SID (and the Oracle home) explicitly in scripts instead of relying on whatever the environment happens to contain.
Read and keep the whole Oracle Net error stack in support tickets and logs, not only the first line: for ORA-12560 the useful detail is always further down.
Common questions
How do I fix ORA-12560 on Windows?
Check that the OracleServiceSID Windows service is enabled and running, start it with NET START OracleServiceSID if not, and make sure ORACLE_SID names that instance before running sqlplus / as sysdba. If a network connection fails instead, read the rest of the error stack.
What does protocol adapter error actually mean?
It is a generic error from the layer that carries Oracle Net over TCP, IPC or a local connection. It says that layer failed, not why; the lower entries in the error stack, the sqlnet.log file or a client trace give the reason.
Why does the new wording say Database communication protocol error?
Oracle reworded many Oracle Net messages in current releases. ORA-12560 is the same error as "TNS:protocol adapter error" in 19c and 21c, with the same causes and checks.
Official documentation
- ORA-12560 (Oracle Database Error Messages)
- Troubleshooting Oracle Net Services (Net Services Administrator's Guide 19c)
- Starting Oracle Database services (Database Administrator's Reference for Windows 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.