Database Administration

Troubleshooting Oracle Listener Connection Errors on Windows Server 2008 R2 and Fixing SERVICE_NAME

📅 May 13, 2026 ✎ GetModNest Editor Tested on: Oracle 9i, Windows Server Level: Intermediate

Overview

This article documents a troubleshooting case for Oracle listener connection errors on Windows Server 2008 R2.

The environment involved Oracle 9i, PL/SQL Developer, and a BSEAP 5.0 client. The database instance itself could be started, and the listener process could also run, but client tools could not connect correctly.

The most important client-side errors were:

SQL*Plus / SQL*Net: ORA-0005: archiver error. Connect internal only, until freed.

and:

ORA-12514: TNS listener does not currently know of service requested in connect descriptor

The final root cause was that the Oracle database instance was not correctly registered with the listener. The connection descriptor used by PL/SQL Developer or the business client referenced a SERVICE_NAME that the listener did not know.

Environment

  • OS: Windows Server 2008 R2
  • Database: Oracle 9i Standard Edition
  • Client tools: PL/SQL Developer and BSEAP 5.0 client
  • Service management: Windows Services and command line
  • Listener service name: OracleTNSListener
  • Database instance service format: OracleService<SID>

Problem Description

The business client reported a database connection failure.

PL/SQL Developer also failed to connect and returned:

ORA-12514: TNS listener does not currently know of service requested in connect descriptor

This error means that the listener was reachable, but it did not have a registered service matching the SERVICE_NAME in the client connection string.

Key Diagnosis

The key point was to separate these three layers:

  1. whether the Oracle instance service is running
  2. whether the Oracle listener service is running
  3. whether the listener knows the correct database SERVICE_NAME

A running listener does not automatically mean the database service is correctly registered.

Step 1: Check Listener Status

Run the following command:

lsnrctl status

The observed result was similar to:

Service "orcl" has 1 instance(s).
Instance "orcl", status READY

This indicates that the listener already knows a service named orcl, and the instance status is READY.

If the service list is empty, or if the expected service is not listed, the client may fail with ORA-12514.

Step 2: Check Windows Oracle Services

Important services include:

OracleService<SID>
Oracle...TNSListener

The database instance service and the listener service should both be running.

If the database instance service is stopped, start it:

net start OracleServiceXXX

If needed, restart it:

net stop OracleServiceXXX
net start OracleServiceXXX

Replace XXX with the actual SID.

Step 3: Restart the Listener

Restart the Oracle listener:

net stop OracleTNSListener
net start OracleTNSListener

After restarting, check again:

lsnrctl status

At this point, the listener should show the correct service and instance status.

Step 4: Verify SERVICE_NAME in Client Configuration

The ORA-12514 error is commonly caused by a mismatch between the client connection descriptor and the listener service list.

If lsnrctl status shows:

Service "orcl" has 1 instance(s)
Instance "orcl", status READY

then the client should also use:

SERVICE_NAME=orcl

If the client uses another service name, the listener will reject it with ORA-12514.

Step 5: Check tnsnames.ora

The tnsnames.ora entry should match the service shown by lsnrctl status.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = server_ip_or_hostname)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

For older Oracle environments, some clients may use SID instead of SERVICE_NAME:

(CONNECT_DATA =
  (SID = orcl)
)

The correct choice depends on how the listener and database are configured.

Step 6: Test PL/SQL Developer Again

After verifying the listener and client connection descriptor, test PL/SQL Developer again.

If PL/SQL Developer previously returned ORA-12514, then a corrected SERVICE_NAME or SID entry should allow it to connect.

Step 7: Test the BSEAP 5.0 Client

After PL/SQL Developer succeeds, test the business client again.

If the BSEAP client still fails, verify whether its database connection configuration uses the same host, port, and service name as the working PL/SQL Developer connection.

About the Archiver Error

One note also mentioned an error similar to:

archiver error. Connect internal only, until freed.

This type of error usually means the database archiver process is blocked, often because archive log space is full or the archive destination is unavailable.

If this error appears, check the archive log destination, free disk space, database alert log, and whether archived redo logs need to be moved or backed up.

However, in this troubleshooting case, the main connection problem was related to listener service registration and SERVICE_NAME configuration.

Root Cause Analysis

The issue was caused by a mismatch between the Oracle listener registration and the client connection configuration.

The important evidence was:

  1. PL/SQL Developer returned ORA-12514.
  2. lsnrctl status was required to confirm what services the listener actually knew.
  3. After checking and restarting the instance/listener services, the listener showed Service "orcl" and Instance "orcl", status READY.
  4. The client configuration needed to match that service name.

Recommended Troubleshooting Sequence

1. Check Whether the Database Service Is Running

net start OracleServiceXXX

2. Check Whether the Listener Is Running

lsnrctl status

3. Restart the Database Instance Service If Needed

net stop OracleServiceXXX
net start OracleServiceXXX

4. Restart the Listener

net stop OracleTNSListener
net start OracleTNSListener

5. Confirm Listener Registration

lsnrctl status

Expected result:

Service "orcl" has 1 instance(s).
Instance "orcl", status READY

6. Match SERVICE_NAME in the Client

Make sure PL/SQL Developer, tnsnames.ora, and the business client use the service name shown by lsnrctl status.

SERVICE_NAME=orcl

Common Mistakes

  1. Assuming the listener is correct just because the listener service is running.
  2. Using a SERVICE_NAME in the client that does not appear in lsnrctl status.
  3. Restarting only the listener but not the database instance service.
  4. Restarting only the database instance but not the listener.
  5. Confusing SID and SERVICE_NAME in older Oracle versions.
  6. Ignoring archive log errors that may block normal database access.

Final Conclusion

The Oracle connection failure was mainly caused by the listener not recognizing the service requested by the client.

The key diagnostic command was:

lsnrctl status

The listener needed to show a registered service such as:

Service "orcl" has 1 instance(s).
Instance "orcl", status READY

After restarting the Oracle instance service and the listener, and after ensuring that the client used the correct SERVICE_NAME, PL/SQL Developer and the business client could be tested again.

The most important lesson is that a running Oracle listener does not guarantee that the requested database service is registered.

Always compare the client SERVICE_NAME with the services shown by lsnrctl status.

Need Help with a Similar Problem or Project?

This note is based on a real troubleshooting, configuration, or development workflow. If you need help with databases, Linux servers, web applications, desktop software, iOS and Android apps, automation scripts, deployment, or AI development environments, GetModNest can provide practical technical support, troubleshooting, and development assistance.

Email: info@getmodnest.com