Friday, May 30, 2014

ORA-12154: TNS could not resolve service name tips


ORA-12154: TNS could not resolve service name tips
 



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.

No comments:

Post a Comment