Question: I need help with this error: ORA-12154: TNS: could not resolve service name.
Answer: The ORA-12154 is a very common error, always related to your local copy of the tnsnames.ora file, your listener configuration and your database name aliases.
Make sure that your listener is listening for the same service name that you are using.
Your service name might have an alias, so check for global (world) entries and local entries. Check:
$ORACLE_HOME/network/admin/tnsnames.ora
Check your global_name setting with this SQL:
select * from global_name;
The query value should match your init.ora parms for db_name and db_domain, You can change the global_name with an ALTER DATABASE command, as follows:
alter database rename global_name to xxx;
Also see these notes on configuring your tnsnames.ora file and troubleshooting network errors.
Rampant author Steve Callan notes this on the ORA-12154 error:
"One of the most common errors related to improper configuration is the "ORA-12154: TNS: could not resolve service name" error.
It is not uncommon for new users of Oracle to spend hours upon hours trying to figure out what their mistake is when ORA-12154 appears."
The oerr utility notes this on the ORA-12154 error::
$oerr ora 12154
ORA-12154: TNS:could not resolve the connect identifier specified
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.
Action: The following actions may be appropriate:
If you are using local naming (tnsnames.ora file):
Make sure that TNSNAMES is listed as one of the values of the names.directory_path parameter in the sqlnet.ora Oracle Net profile.
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 may make it unusable.
If you are using directory naming:
Verify that LDAP is listed as one of the values of the names.directory_path parameter in the sqlnet.ora Oracle Net profile.
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
If you are using EZCONNECT naming:
Verify that EZCONNECT is listed as one of the values of the names.directory_path parameter in the sqlnet.ora Oracle Net profile.
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.
NOTE: While there are many possible causes for the ORA-12154 error, it can also appear in the stack with a TNS-03505: failed to resolve name error indicating a problem occurred prior to the server being found.
Also note the similarities in numbering and content for ORA-12514, which is related to the tns listener service.