Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Question: My database was running fine and all of a sudden I am getting the TNS12514 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 TNS12514.
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:
Question: How do I verify that my Oracle Windows services are running? I want to
monitor and verify that the Windows services are always available?
Answer: In Oracle Windows you can check for the Oracle services with these
commands, and you can encapsulate the services monitoring with a "check script".
The Windows Oracle database must attach itself to a running Windows process, and it is
the Windows Service that provides this process. Most DBAs think that the Windows
service is the Oracle database but that is not true. The Windows service can start/stop
the Oracle database, but it can also be started without starting the database.
Most Problem with the Windows Service for the Oracle database involve the
service starting but the database not starting.
If the Windows service is set to automatically start when the server boots but the Oracle
database does not start, you may have a improper registry setting or you may have a bad
service.
1. Check Task Manager for the ORACLE.EXE process. If it is present, then the
service started.
2. Check the Alert Log for the database. If the problem is not with the database, there
will be no indication in the log that the database even tried to start.
3. Check the oradim.log in the $ORACLE_HOME/database directory for errors.
Check the date on the log file as versions before 9i did not date/time stamp the entries.
If there are no errors in the logs then try and start the Oracle database.
C:> sqlplus "/ as sysdba"
connected to an idle instance
SQL> starup
There are a variety of common network connectivity error messages, and most DBA's
have seen TNS error messages these at sometime in their careers. Here is just a small
sample of possible TNS network connectivity-related errors:
TNS-12545: Connect failed because target host or object does not exist
ORA-12154: TNS: Could not resolve service name
ORA-12157: TNS Internal network communication error
In the simplest of terms, the Oracle*Net architecture is like peeling on onion, with one
transport layers nested inside the inner payer. The lowest level of Oracle transport is
TCP/IP (or rarely other protocols), where the packets are shipped between the servers.
Here we see a TNS service name of berlin, which defines a connection to a remote
server named hum that contains an Oracle database named kraus. When a remote
connection request is made from the UNIX server, the /etc/host file is accessed to get
the IP address for the hum server.
From the listing below, we see that the hum server is located at 192.133.13.12. In sum,
the /etc/host file is used to isolate the IP address from the tnsnames.ora file. If the IP
address should ever change, the UNIX systems administrator only needs to change the
IP address in one place.
hum.com
dopey.com