ORA-12514: TNS Listener Does Not Currently Know of Service Requested in Connect Descriptor
ORA-12514 is one of the most common Oracle connectivity errors, occurring when a client attempts to connect to a database service that the TNS listener cannot find in its current registry. Simply put, the listener is running and reachable, but the specific service name requested in the connection descriptor has not been registered with it. This error is frequently encountered after database restarts, environment migrations, or misconfigured tnsnames.ora files.
Top 3 Causes
1. Service Not Registered with the Listener
The database instance may be running, but the service hasn't dynamically registered with the listener yet (this can take up to 60 seconds after startup via PMON), or static registration is missing from listener.ora.
-- Check which services are currently registered
SELECT NAME, NETWORK_NAME FROM V$SERVICES;
-- Check the SERVICE_NAMES parameter
SHOW PARAMETER SERVICE_NAMES;
-- Force immediate re-registration with the listener
ALTER SYSTEM REGISTER;
2. Mismatched Service Name in Connection Descriptor
The SERVICE_NAME in tnsnames.ora or your JDBC/application connection string doesn't exactly match what's registered on the listener — often due to typos, missing domain suffixes, or case sensitivity issues.
-- Find the correct service name on the database server
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'service_names';
-- Verify the exact service name including domain
SELECT NAME, NETWORK_NAME, CREATION_DATE
FROM DBA_SERVICES
WHERE NAME NOT IN ('SYS$BACKGROUND', 'SYS$USERS')
ORDER BY NAME;
A correct tnsnames.ora entry should look like this:
-- tnsnames.ora example (client-side)
-- MYDB =
-- (DESCRIPTION =
-- (ADDRESS = (PROTOCOL = TCP)(HOST = db-host.example.com)(PORT = 1521))
-- (CONNECT_DATA =
-- (SERVER = DEDICATED)
-- (SERVICE_NAME = MYDB.example.com) -- must match V$SERVICES.NAME exactly
-- )
-- )
3. Listener Misconfiguration or Missing Static Registration
The listener.ora file may lack a SID_LIST entry for static registration, or point to a wrong host/port. Without static registration, there's a window after startup where connections will fail.
-- listener.ora static registration example (server-side)
-- SID_LIST_LISTENER =
-- (SID_LIST =
-- (SID_DESC =
-- (GLOBAL_DBNAME = MYDB.example.com)
-- (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
-- (SID_NAME = MYDB)
-- )
-- )
-- After editing listener.ora, reload without downtime:
-- lsnrctl reload LISTENER
-- Confirm instance details for listener.ora values
SELECT INSTANCE_NAME, HOST_NAME, STATUS FROM V$INSTANCE;
Quick Fix Solutions
Step 1: Run lsnrctl status on the database server and compare the listed services against what your client is requesting.
Step 2: Force the database to re-register with the listener immediately:
-- Run as SYSDBA
ALTER SYSTEM REGISTER;
Step 3: If the service still doesn't appear, create and start it manually:
BEGIN
DBMS_SERVICE.CREATE_SERVICE(
service_name => 'MY_SERVICE',
network_name => 'MY_SERVICE'
);
END;
/
BEGIN
DBMS_SERVICE.START_SERVICE('MY_SERVICE');
END;
/
Step 4: As a temporary workaround, use SID instead of SERVICE_NAME in your connection descriptor to bypass service registration issues while you troubleshoot.
Prevention Tips
1. Always configure both static and dynamic registration. Don't rely solely on dynamic registration (PMON-based) in production. Add a SID_LIST_LISTENER block to listener.ora so the listener recognizes the service immediately on startup, before PMON completes its first registration cycle.
2. Include connectivity validation in your change management checklist. Whenever you change SERVICE_NAMES, DB_DOMAIN, DB_NAME parameters, or restart the listener/database, always run a post-change verification:
-- Standard post-change connectivity test
SELECT SYS_CONTEXT('USERENV', 'DB_NAME') AS DB_NAME,
SYS_CONTEXT('USERENV', 'SERVICE_NAME') AS SERVICE_NAME,
SYS_CONTEXT('USERENV', 'SERVER_HOST') AS SERVER_HOST
FROM DUAL;
Combine this with tnsping <service_name> from the client side to confirm both the network path and service registration are healthy.
Related Errors
-
ORA-12505 – Same concept but triggered when using
SIDinstead ofSERVICE_NAMEin the connect descriptor. - ORA-12541 – TNS: No Listener. The listener process itself isn't running; check this before investigating ORA-12514.
- ORA-01034 – Oracle Not Available. The listener is fine, but the database instance itself is down.
📖 Want a more detailed guide?
Check out the full in-depth version (Korean) on oraerror.com — includes detailed analysis, additional SQL examples, and prevention tips.
Top comments (0)