Question:
My database was running fine and all of a sudden I am getting
the TNS-12514 error:
TNS-12514: TNS:listener does not currently know of service requested
in connect descriptor
I am running on Windows.
I now get the TNS-12514 constantly, and I did not change my
listener.ora or tnsnames.ora files.
Is this TNS-12514 error a Windows problem?
Answer: Your ROOT CAUSE is that you are running on Windows!
BEWARE: Windows IS NOT robust enough for any mission critical
system, especially with the Windows virus issues and weekly patches.
My Windows
systems crash at a rate at LEAST 4 times more often than
Linux/UNIX.
To diagnose the TNS-12514 error, see these diagnostics for the
TNS-12514 error.
Diagnosing the TNS-12514 in Windows
In Windows when, for unknown reasons, Oracle is refusing
connections, I have seen Windows TNS-12514 problems with any of
these issues:
-
A Windows screen saver causes CPU hogging that
makes connections get refused
-
Somebody installed a Windows virus scanner
-
A weekly Windows patch application has caused a
problem
-
Never apply a Windows patch unless it is to address
a known Oracle problem
-
You have a Windows virus. For example, the
Nimbda virus can cause a TNS-12514.
FIRST THING, I would bounce ALL of your Windows services (or just
bounce the whole PC Windows server):
Then, verify that all of your
Windows services are running properly.
If you continue to get the TNS-12514 error, follow these
Oracle TNS networking diagnostic steps
The
oerr utility shows this for the ORA-12514 and TNS-12514 error:
ORA-12514: TNS:listener does not currently know of service requested
in connect descriptor
Cause: The listener received a request to establish a connection to
a database or other service. The connect descriptor received by the
listener specified a service name for a service (usually a database
service) that either has not yet dynamically registered with the
listener or has not been statically configured for the listener.
This may be a temporary condition such as after the listener has
started, but before the database instance has registered with the
listener.
Action:
-
Wait a moment and try to connect a
second time.
-
Check which services are currently
known by the listener by executing: lsnrctl services
-
Check that the SERVICE_NAME parameter
in the connect descriptor of the net service name used specifies
a service known by the listener.
-
If an easy connect naming connect
identifier was used, check that the service name specified is a
service known by the listener.
-
Check for an event in the listener.log file.
Burleson
Forum user and Oracle expert, Dave, notes:
It appears in a TNS-12514 error that your database isn't
registering itself with the listener.
Issue an alter system register xxx
and lsnrctl status from SQL*Plus and
see if the listener knows about your database
Then issue a show parameter local_listener
to show what the database thinks about the listener status.
Failing that, place a static entry in the listener.ora
for the database service name and the TNS-12514 may be fixed.