2010-08-13 98 views
8

我试图从ASP经典应用程序连接到一个oracle数据库,但是我一直运行到ORA-12154错误。Oracle(0x80004005)ORA-12154:TNS:无法解析连接标识

  1. TNSNAMES.ORA配置正确

    DBSOURCE.ABcom = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = TCP)(HOST = CDBcom)(PORT = 1231) ) ) (CONNECT_DATA = (SERVICE_NAME = DBSOURCE) ) )

  2. 我可以TNSPING

    C:\ Documents和Settings \ USERID.A>用tnsping DBSOURCE

    TNS Ping实用工具对32位Windows:版本10.2.0.4.0 - 生产上09-MAR-2 011 9点十二分31秒

    版权所有(c)1997,2007,Oracle。版权所有。

    使用参数文件: C:\ ORACLE \产品\ 10.2.0 \的Client_1 \ NETWORK \ ADMIN \ SQLNET.ORA

    用于TNSNAMES适配器来解析别名 试图联系(DESCRIPTION =(ADDRESS_LIST = (ADDRESS =(PROTOCOL = TCP) (HOST = CDBcom)(PORT = 1231)))(CONNECT_DATA =(SERVIC E_NAME = DBSOURCE))) 行(30毫秒)

  3. 我可以创建一个ODBC连接和我已经测试了成功的连接。

  4. 我可以通过蟾蜍连接到oracle数据库。
  5. 我检查了我的sqlnet.ora文件

    NAMES.DEFAULT_DOMAIN = ABCOM

    SQLNET.AUTHENTICATION_SERVICES =(NONE)

    NAMES.DIRECTORY_PATH =(TNSNAMES,EZCONNECT)

  6. 我也检查过TNSNAMES.ORA作为我的系统路径之一。

  7. 我可以用sqlplus

这里连接到数据库是引发错误

dim CnnStr 

Set Cnn = Server.CreateObject("ADODB.Connection") 

CnnStr="Provider=MSDAORA.1;Password=pass;User ID=user;Data Source=DBSOURCE" 

Cnn.Open CnnStr 

我运行Windows XP专业版32位SP3

我以前做的代码在一个同事的机器上测试了这个,asp应用没有问题,我在某处丢失了一个配置还是弄乱了我的配置?

感谢大家的帮助!

回答

4

似乎所有的设置都被检查,但这里是我的一些故障排除建议:

  • 如何在IIS下运行的帐户限制?它是否具有读取TNSNAMES的文件权限?你有没有试图给用户更多的权利。甚至用本地系统帐户运行IIS?记得把它恢复原样。
  • 您确定没有可能影响/阻止访问的第三方应用程序这样的防病毒或防火墙。 (禁用它们来测试,但不要忘了重新启用:)

(那你最后如何解决呢?)

+0

非常感谢你!在我的组中包含了USERID \ USERS或者在TNSNAMES.ORA文件中的权限之后,它就起作用了! – ChickSentMeHighE 2011-03-15 16:32:11

+0

像一个魅力一样工作。谢谢。在$ $$严重的痛苦。 – temarsden 2012-08-02 22:30:46

2

“这个工作在同事机器上,但不是我的 ”。

ORA-12154通常是一个配置问题,在您的情况下它肯定会如此。简短的答案是将您的机器与您的同事的机器进行比较,并找出其差异。

要做的检查包括:

  • 的TNANAMES.ORA文件
  • sqlnet.ora文件
  • 的LISTENER.ORA文件(如果您使用的是本地数据库)
+0

我虽然也从我的同事(其连接的作品复制TNSNAMES.ORA和SQLNET.ORA后什么但是最初那)它仍然不能解决问题 – ChickSentMeHighE 2010-08-13 14:43:46

+0

奇怪的是他有能力通过tnsping ping数据库。创建一个ODBC连接并从ODBC接口测试它可以正常工作。通过sqlplus连接也可以工作... – Mike 2010-08-13 17:14:17

+0

可能有一些服务需要重新启动才能接收已更改的TNSNAMES.ORA或注册表设置更改)。也许尝试绕过TNSNAMES.ORA通过直接指定一个主机:端口:服务 – 2010-08-16 04:42:21

0

尝试在计算机上将环境变量TNS_ADMIN的值设置为/ network/admin(或者tnsnames.ora文件所在的任何位置),并查看是否有帮助。

+0

感谢您的回答,但它并没有解决问题:( – ChickSentMeHighE 2010-08-13 14:25:28

1

如果您正在运行64位操作系统和Oracle 10,请尝试安装Oracle的所有修补程序。 发生了类似的事情,SQL plus和所有其他工作,除了我的.NET程序。 我在“Program files(x86)”文件夹中运行.Net程序。安装补丁修复了它。

+0

可以请告诉我,我们需要安装所有的补丁。如果你可以分享这个链接谢谢!! – SharpCoder 2014-04-08 13:14:25

2

你有多个Oracle家园吗?检查IIS是否指向另一个ORA_HOME(从而无法找到您的tnsnames.ora条目)。 我对IIS配置不是很熟悉,所以我会通过在我的PC上添加TNS条目来测试所有tnsnames.ora。

1

的可能的问题是在由Oracle目录缺乏读取权限用户IIS正在运行。

正如@Derick所说,暂时在$ ORACLE_HOME目录(Everyone =完全控制)上设置权限全开,重新启动IIS并测试。当它工作时,给IIS用户读取该目录的权限。

您也可以使用Process Monitor from Microsoft SysInternals确认此问题,并在CreateFile(...)API调用期间查看失败消息以打开DLL或读取TNSNAMES.ORA文件。考虑到在通过游标进行选择时临时文件的工作方式,您可能还需要为IIS用户提供对某些目录的写入权限。

0

我有类似的问题,并找到了一个简单的解决方案。您不必修改任何配置文件。希望这可以帮助你:

CREATE DATABASE LINK server2_db 
    CONNECT TO dbuser IDENTIFIED BY pwd USING 
'(DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = server_2)(PORT = port_num)) 
    ) 
    (CONNECT_DATA = 
    (SERVICE_NAME = server2_db) 
    ) 
)'; 

解决的办法是从这里:http://oraclequirks.blogspot.com/2008/11/ora-12154-tnscould-not-resolve-service.html

相关问题