在LINUX下使用OCI时,因为特殊原因,只有WINDOWS下的ORACLE服务器,并且在LINUX上也安装了ORACLE客户端。
但在LINUX使用OCI程序连接WINDOWS下ORACLE时,始终连不上,并且报错:"ORA-12154: TNS: 无法解析指定的连接标识符"
但使用该username,password,sid通过linux下的sqlplus可以连上windows下的ORACLE服务器。
请教高手是何原因。

解决方案 »

  1.   

    能把你用OCI连接的时候的代码发下看看么?
      

  2.   

    int iDBConnect(stDBPARA *pstDBPara, COM_ErrMsg *pstErrMsg)
    {
    int iRet;

    pthread_mutex_lock(&mutexDBConnect);
    iRet =iConnOracle(pstDBPara,
    gl_stSysParam.stOraParam.szOraUsrName,
    gl_stSysParam.stOraParam.szOraUsrPasswd, 
    gl_stSysParam.stOraParam.szOraTNSName);

    pthread_mutex_unlock(&mutexDBConnect);

    if (iRet < 0)
    {
    char szErrBuf[1024];
    sprintf(szErrBuf, "Connect oracle fail.\n%.800s\n", pstDBPara->szErrMsg);
    mSETERRMSG(0, szErrBuf, *pstErrMsg);
    return(-1);
    }
    return 0;
    }
      

  3.   

    你在调用iConnOracle之前,把szOraUsrName, szOraUsrPasswd,szOraTNSName都打出来看了么?
    肯定是对的么?
      

  4.   

    什么意思,我是直接拷出来的,程序是别人写的好用。我弄台新机器做测试机,装了新的数据库,配置了相同的tns,重新编译程序,启动之后就是这样,程序我没有做任何修改。
      

  5.   

    估计要么是tns配置不对,要么是代码不对。
    但是如果你从当前的LINUX机,按你的TNS文件,能够连接上的话,可能还是代码的问题。
    最好是找到开发人员,让他来调试一下,因为他的程序读取源文件的时候,有可能读的不是你所配置的Tns文件。也有可能读的是他程序自带的配置文件。。他给你的程序包里,没有其它的配置文件么?比如说后辍是ini之类的?