ORA-12154 TNS:could not resolve service name
12154 is probably the most common Oracle error message, it indicates that the Oracle client attempted to communicate with the listener on the specified server but either failed to contact the server or did not find a matching service name on that server.
TNS or 'Transparent Network Substrate' is a transport protocol that allows Oracle sessions to communicate across a network.
DB Server <=> Listener <=> Network connection <=> Client (SQL*Net) <=> Application.
In the path above, tnsping can be used to test the parts in bold and should be the first troubleshooting step.
If tnsping fails, that generally indicates a problem finding the server connection - if TNSNAMES specifies an IP address, is it correct?, if it's a DNS name, is that resolving correctly? (try switching for an IP address to find out.)
If tnsping succeeds, that can indicate a problem with the client configuration but could equally be that the connection is working as far as the listener but the database is down. Try comparing with another PC - if multiple machines are failing that usually points towards a server issue.
Ora-12154 can be a tricky problem to nail down because there are many possible causes, try making a connection directly on the server or completely regenerate the TNSNAMES.ORA file on the client.
Cause: A connection to a database or other service was requested using a connect identifier, and the connect identifier specified could not be resolved into a connect descriptor using one of the naming methods configured.
For example, if the type of connect identifier used was a net service name then the net service name could not be found in a naming method repository, or the repository could not be located or reached.
Local naming (TNSNAMES.ORA file):
- Make sure that "TNSNAMES" is listed as one of the values of the NAMES.DIRECTORY_PATH parameter in the Oracle Net profile (SQLNET.ORA)
- Verify that a TNSNAMES.ORA file exists and is in the proper directory and is accessible.
- Check that the net service name used as the connect identifier exists in the TNSNAMES.ORA file.
- Make sure there are no syntax errors anywhere in the TNSNAMES.ORA file. Look for unmatched parentheses or stray characters. Errors in a TNSNAMES.ORA file can make it unusable.
- Verify that "LDAP" is listed as one of the values of the NAMES.DIRETORY_PATH parameter in the Oracle Net profile (SQLNET.ORA).
- Verify that the LDAP directory server is up and that it is accessible.
- Verify that the net service name or database name used as the connect identifier is configured in the directory.
- Verify that the default context being used is correct by specifying a fully qualified net service name or a full LDAP DN as the connect identifier
Easy connect naming:
- Verify that "EZCONNECT" is listed as one of the values of the NAMES.DIRETORY_PATH parameter in the Oracle Net profile (SQLNET.ORA).
- Make sure the host, port and service name specified are correct.
- Try enclosing the connect identifier in quote marks. See the Oracle Net Services Administrators Guide or the Oracle operating system specific guide for more information on naming.
“A man of genius makes no mistakes, his errors are volitional and are the portals to discovery” ~ James Joyce, Ulysses
OraFAQ - ORA-12154