How to Resolve ORA-12514 error While accessing Oracle database link?

Our client had requirement to pull data from MSSQL server to Oracle Database. I installed Oracle Gateway Server for MSSQL and configured database link to access the MSSQL Database.
When trying to access a heterogenous database link between Oracle Database 12c and MSSQL database, some users were getting the below error
ORA-12154: TNS:could not resolve the connect identifier specified.


Analysis


Database link was created on the Oracle Database environment to access data from MSSQL Server.
Database link was created using below command


create public database link DBLINK_INTG connect to “MYSQL” identified by “Password” using ‘dg4msql’;


Error


SQL>select sysdate from dual@DBLINK_INTG;
ORA-12154: TNS:could not resolve the connect identifier specified
12154. 00000 –  “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:   
           – 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 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 may make it unusable.
           – If you are using directory naming:
           – 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
           – If you are using 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.





Solution


Recreate Heterogenous Database link using below command




create public database link DBLINK_INTG connect to “MYSQL” identified by “Password” using ‘(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Test1.domain.com)(PORT=1524))(CONNECT_DATA=(SID=dg4msql))(HS=OK))’
  

Leave a Reply

Your email address will not be published. Required fields are marked *