java.sql.SQLException: ORA-12154

We are getting java.sql.SQLException: ORA-12154: TNS:could not resolve
service exception. It comes allof a sudden. It was working fine. But the issue got resolved once we recycle our Sunone Application server.

Any idea ..Is it something to do with momentary network issue, after which SunApplication server not able to connect to
database. At the time when we got this exception, we tried connnectig to database using sqlplus, it worked fine.

Oracle Troubleshooting
--------------------------------------------------------------------------------
ORA-12154: TNS:could not resolve service name
--------------------------------------------------------------------------------
Symptom:
When trying to connect to Oracle the following error is generated:

ORA-12154: TNS:could not resolve service name

Cause:
This error indicates that the service (or TNS alias) specified when trying to connect does not exist.

TNS aliases or service names are defined locally to each workstation. Thus different workstations could have a completely different alias to refer to the same database.

Remedy:
Check what aliases are defined on the workstation, either use one that is defined or add an appropriate one.

The following methods can be used to view the TNS names:

Look in the file ORANT\ Network\ Admin\ Tnsnames.ora (for versions of Oracle prior to 8.1) or Oracle\
Ora81\ Network\ Admin\ Tnsnames.ora (for versions of Oracle from 8.1 onwards). In this file each defined
name will normally have.world appended to it.

For Oracle 8, run Oracle Net8 Easy Config. This will list the available service names.

For Oracle 7, run SQL Net Easy Configuration. This provides the option to list the available service names.

For Oracle 8.1 onwards: Try specifying the full service name, i.e. as it appears in the tnsnames file.

If a connection alias is not being explicitly provided then try to identify what alias Oracle thinks you are
using. This will typically be contained in the sqlnet.log file that the Oracle client will produce.
Possible places where Oracle could be getting this (default) alias from:
The environment variableLOCAL

Chaz S

1.what version of oracle?
-------------------------------------------------------
You stated:
java.sql.SQLException: ORA-12154: TNS:could not resolve service name
------------------------------------------------------------------
Most probable case:
This may happen when a Java client requests a database connection but the database server has not started or
not listening.

Solution1. Make sure the service name in the host string is correct. e.g.

jdbc:oracle:oci8:@kesdee.world

Solution2. Start the Oracle Server

Solution3. Start the Listener. Under MS-DOS:
lsnrctl.exe
start

Soution4. The tnsname specified in jdbc url is incorrect, check if the names match in ORACLE_HOME/network/admin/tnsnames.ora

Your problem must be solved by now:if not go down
further!!!!
--------------------------------------------------------------------
If not solved yet:RUN THE FOLLOWING CHECKS:

1>You mustve missed some vital info in SQLNET.ORA:
for egs:
NAMES.DEFAULT_DOMAIN entry missed Due to which you cannot start the application and the The JRE runs into Exception Errors!

2>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.

3>Verify that the host or database name is correct and that it is listed in the TNSNAMES.ORA file.This file
keeps a list of available databases and related information required to connect to them.

4>If you are using directory naming:
- Verify that &quo;LDAP&quo; 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 - If you are using easy connect naming:
- Verify that &quo;EZCONNECT&quo; 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.

No comments:

topics