tnsnames.ora里面的内容如下:
ORACLE_192.168.1.125 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.125)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = oracle)
      (SERVER = DEDICATED)
    )
  )
这是客户端访问服务器时自动生成的,程序里的连接字符串是<add name="oracle_conn" connectionString="Data Source=ORACLE;User ID=qqhe;Password=qqhe;" providerName="Oracle.DataAccess.Client"/>调试时vs2010提示ORA-12154: TNS: 无法解析指定的连接标识符,让我感到疑惑的一点是连接串里好像没有指定使用服务器上的哪个数据库,请问是不是连接字符串写错了,如果错了应该怎么写?另外,Oracle.DataAccess.Client.OracleConnection与OracleConnection(非System.Data.OracleClient.OracleConnection)以及ODP.NET到底有什么区别或者联系?在下初学Oracle.DataAccess.Client连接方式,请前辈们指教。

解决方案 »

  1.   

    好长时间没有用Oracle了,但是依稀能记忆起点,希望对你有点帮助。
    您再检查你的一个监听的文件,好像跟你上面的文件在同一个目录。这两个文件弄明白了,你可以随意的手动的加删Orcale的连接。不用手动在Oracle的工具里去一步一步配置了。
      

  2.   

    Data Source=ORACLE
    改成ORACLE_192.168.1.125
    "Data Source=数据库名;Persist Security Info=True;User ID=用户名Password=密码;Unicode=True"
      

  3.   

    Oracle Client连接的配置,完全可以在上面的两个文件里 搞定,或许只需要一个文件---tnsnames.ora。
      

  4.   

    感谢楼上两位的回答,这种连接不支持Unicode,去掉Unicode并修改data source为ORACLE_192.168.1.125
    之后问题仍然存在……
      

  5.   

    sigh, 直接上一个不依赖于tnsnames.ora的连接串吧:使用下面的connectstring,肯定没问题Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.125)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=oracle)));User Id=qqhe;Password=qqhe;
      

  6.   

    hi,又见面了,不依赖tnsnames.ora的连接串确实可以用,但别光叹气啊,能说说这到底是怎么回事吗~~
      

  7.   


    其实这个不依赖于tnsnames.ora的连接串内容跟tnsnames.ora里的一个条目(item)规范是一样的。oracle实现的ado.net库支持这种格式串的解析,这样做的好处是你的程序不用依赖于tnsnames.ora的解析。
    原因就是这样子。我鼓励使用这种格式的连接串。
      

  8.   

    但是Oracle为什么不把ora文件设计成类似XML格式的文件进行解析呢?不要说ora的格式非常容易写错,现在就连orale自己写的tnsnames都解析不出来了……呵呵,难以相信Oracle会做出如此糟糕的“BUG”……
      

  9.   

    这个不是bug。主要是出于兼容性的考虑,oracle推出tnsnames.ora格式的时候,xml还没有兴起。
    就这样一直延续到现在。用户自己完全可以构造自己的xml配置文件,将其生成tnsnames.ora格式。熟练了,就不会出错了。