Oracle error: ORA-12154: TNS:could not resolve service
Description:
Attempting to CONNECT to the Oracle database using an OpenESQL application returns
SQLCODE = -19703 SQLMessage > DB: [Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve service name
Resolution:
Within the ODBC driver configuration -- using the Microsoft ODBC Administrator Utility -- one of the configuration parameters will be the Oracle Server (TNS) alias. It should be possible to test the ODBC connection from within the ODBC Administrator.
I would expect this to fail with the same error as the COBOL application.
The next thing to check is that the server is "cataloged" correctly. The server connection is typically created using Oracle's Network Configuration utility, netca. The resultant information gets stored under your Oracle installation directory, in NETWORK\ADMIN\TNSNAMES.ORA .
Using Oracle's "tnsping" utility, you can verify whether the client and connect to the server. For example, with your TNSNAMES.ORA looking like this :
which should, if the configuration is correct, return something like :
Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = myserver)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORACLESID))) OK (50 msec)
If that fails, then you should verify that :
1. The TNS Alias specified within the ODBC driver configuration is set to the correct name, 2. That within TNSNAMES.ORA, the server name, port number, and SERVICE_NAME parameters are set correctly. You may need to verify this on the server itself, checking the status of the TNS listener with
lsnrctl status
which should show something like :
STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 10.1.0.3.0 - Production Start Date dd-mmm-yyyy Uptime 10 days 3 hr. 7 min. 14 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File C:\Database\Oracle\ora10\network\admin\listener.ora Listener Log File C:\Database\Oracle\ora10\network\log\listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myserver)(PORT=1521))) Services Summary... Service "ORACLESID" has 1 instance(s). Instance "ORACLESID", status READY, has 1 handler(s) for this service... The command completed successfully