Skip to content
Oracle Database

Oracle Error ORA-12514

service is not registered with the listener

Applies to: Oracle Database 19c, 21c, 23ai and 26ai (wording differs: see below)
Last technically reviewed 24 October 2026 on Oracle Database Error Messages reference (26ai, 21c and 19c); not run locally
The full message
ORA-12514: Cannot connect to database. Service salespdb.example.com is not registered with the listener at host 192.0.2.56 port 1521. (CONNECTION_ID=Qm9vZ3VzQ29ubmVjdElEMQ==)
Other forms of this message
Oracle Database 19c and 21c
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
The same error as Oracle Net tools and logs number it (19c)
TNS-12514: TNS:listener does not currently know of service requested in connect descriptor
Error code
ORA-12514
Product
Oracle Database
Versions
Oracle Database 19c, 21c, 23ai and 26ai (wording differs: see below)
Last reviewed
24 October 2026

What it means

ORA-12514 means the client reached an Oracle listener, but the service name in the connect string is not one the listener currently knows, so it could not hand the connection to a database.

Every connection first goes to a listener, which looks at the SERVICE_NAME in the connect descriptor and passes the connection to a database instance offering that service. Databases tell the listener about their services themselves (dynamic service registration, done by the LREG background process), or a DBA lists them statically in listener.ora. If the requested service is in neither list, the listener refuses the connection with ORA-12514.

Getting this error is useful information: the host and port are right and a listener is running (otherwise you would see ORA-12541 or ORA-12170). What is wrong is the service name, or the database that should offer it is not up or not registered with this listener. Oracle notes it can also be temporary, just after the listener starts and before the instance has registered. Current releases name the service, the listener address and a CONNECTION_ID you can find in trace files; 19c and 21c print only the generic text.

Common causes

  • The service name is wrong: a typo, a missing or extra domain (salespdb instead of salespdb.example.com), or the SID or container database name used where a pluggable database service is needed.
  • The database instance is down, or the pluggable database that offers the service is not open.
  • The listener was restarted recently and the instance has not registered again yet.
  • The database registers with a different listener: the listener runs on a non-default port or address and the LOCAL_LISTENER parameter does not point to it.
  • A service that the application expects was never started on this database, or was moved to another instance.

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.

List the services the listener knows

Run on the machine where the listener runs. Add the listener name if it is not the default LISTENER. For cloud services, use the connection strings shown in the service console instead.

lsnrctl status
lsnrctl services LISTENER
What to look for

Lines such as Service "salespdb.example.com" has 1 instance(s). and Instance "sales", status READY. Compare the service names character for character with the one in your connect string. Status UNKNOWN means a static entry from listener.ora; READY means the instance registered itself.

Which services does the database offer?

Run on the database while connected locally as a DBA (V$ views need SELECT_CATALOG_ROLE or a DBA account).

SELECT name, network_name, con_name
FROM v$active_services
ORDER BY con_name, name;
What to look for

NETWORK_NAME is the name clients use as SERVICE_NAME. If the service you need is missing, the database is not offering it, so no listener can know it.

Is the instance open, and is the pluggable database open?

SELECT instance_name, status, startup_time
FROM v$instance;

SELECT name, open_mode
FROM v$pdbs;
What to look for

STATUS OPEN for the instance and READ WRITE (or READ ONLY) for the PDB. Oracle's reference lists a database or PDB that is not running among the checks for this error, so a PDB left in MOUNTED state is a prime suspect.

Which listener does the database register with?

SELECT name, value
FROM v$parameter
WHERE name IN ('local_listener', 'remote_listener', 'service_names');
What to look for

An empty LOCAL_LISTENER means the default address (TCP port 1521 on the local host). If your listener uses another port, compare this value with the "Listening Endpoints Summary" of lsnrctl status.

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.

Use a service name the listener reports

Client or network side

Copy the exact service name from lsnrctl services (or from the cloud console) into SERVICE_NAME in tnsnames.ora or into the Easy Connect string. For a container database, applications normally connect to the pluggable database's service, not to the root.

sqlplus shop@//sales-server.example.com:1521/salespdb.example.com

# or in tnsnames.ora
#   (CONNECT_DATA = (SERVICE_NAME = salespdb.example.com))

Wait and retry right after a listener restart

Read-only

Oracle's reference describes this as a possibly temporary condition. Without an explicit registration, clients may be unable to reach the services for up to about 60 seconds after the listener starts (Oracle SQL Language Reference, ALTER SYSTEM REGISTER).

Open the pluggable database

Changes database state

If V$PDBS shows the PDB as MOUNTED, open it from the root container. SAVE STATE keeps it open after the next restart of the container database.

Caution: Needs an administrative connection (for example SYSDBA) to the root container. Check with the DBA first: the PDB may be closed on purpose for maintenance.

ALTER PLUGGABLE DATABASE salespdb OPEN;
ALTER PLUGGABLE DATABASE salespdb SAVE STATE;

Register the services now

Changes database state

ALTER SYSTEM REGISTER tells the database to register with its listeners immediately instead of waiting for the next automatic registration.

Caution: Requires the ALTER SYSTEM privilege. It changes no parameters; if the services still do not appear, LOCAL_LISTENER does not point to this listener.

ALTER SYSTEM REGISTER;

Point the database at a listener on a non-default port

Changes configuration

When the listener does not listen on TCP port 1521, set LOCAL_LISTENER to its address so the database registers there, then register.

Caution: Changes an instance parameter for the whole database. Copy the address exactly from the listener's "Listening Endpoints Summary"; a wrong value moves registration away from the listener clients use.

ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS=(PROTOCOL=TCP)(HOST=sales-server.example.com)(PORT=1522))' SCOPE = BOTH;
ALTER SYSTEM REGISTER;

Examples

A service name with one character missing

Not reproduced here: no Oracle Database is installed for this site. The result shows the message format documented in Oracle's error reference for current releases. The way the host and port are printed and the CONNECTION_ID value are illustrative; the ID differs for every attempt.

-- Oracle Database Free offers the PDB service FREEPDB1
sqlplus shop@//localhost:1521/FREEPDB
Expected result (documented format, not run)
ORA-12514: Cannot connect to database. Service FREEPDB is not registered with the listener at host 127.0.0.1 port 1521. (CONNECTION_ID=Qm9vZ3VzQ29ubmVjdElEMg==)

Connecting just after the listener was restarted

Not reproduced here: no Oracle Database is installed for this site. This is the 19c and 21c wording from Oracle's error reference, which describes the error as possibly temporary until the instance registers with the new listener. A retry a little later, or ALTER SYSTEM REGISTER on the database, ends it.

-- on the server
lsnrctl stop
lsnrctl start

-- on a client, within a few seconds
sqlplus shop@SALESDB
Expected result (documented format, not run)
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

How to prevent it

Give applications a dedicated service name for the pluggable database they use, and copy it from lsnrctl services or V$ACTIVE_SERVICES rather than typing it. Keep the full name with its domain in configuration, so a NAMES.DEFAULT_DOMAIN setting on one client does not change the lookup.

After maintenance, check that the PDBs are open (SAVE STATE keeps them open across restarts) and that lsnrctl status lists their services before reopening the application. If the listener does not use port 1521, set LOCAL_LISTENER so registration does not depend on the default address.

Common questions

How do I fix ORA-12514?

Run lsnrctl services on the database server and compare the registered service names with the SERVICE_NAME in your connect string. Correct the name, open the PDB or start the instance if its service is missing, and use ALTER SYSTEM REGISTER if the listener was just restarted.

What is the difference between ORA-12514 and ORA-12505?

Both come from a listener that does not know what you asked for. ORA-12514 is for a SERVICE_NAME in the connect descriptor, ORA-12505 for a SID. Modern connect strings use SERVICE_NAME, which is also what Easy Connect strings send.

I can connect on the server with sqlplus / as sysdba but clients get ORA-12514. Why?

A local "/ as sysdba" connection does not go through the listener, so it works even when no service is registered. Clients over the network need the listener to know the service, which only happens once the instance (and the PDB) is open and registered.

Learn more on CodeWithSQL

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.