【发布时间】:2013-01-07 08:10:31
【问题描述】:
我是一名新的 (ASP.NET) 开发人员,从现有项目开始,其中一部分连接到 Oracle 数据库。我以前没用过Oracle。
当网络应用程序尝试连接到 Oracle 时,它会抛出上述异常。
很多其他帖子都提到了这个例外,但我觉得我遵循了所有建议都无济于事。
以下是我的设置概览:
- 我已将 Oracle 客户端版本 11.2.0 安装到主目录 "C:\app\TroughT\product\11.2.0\dbhome_1"
- 我添加了一个 tnsnames.ora 从另一台开发人员机器(这一切正常)的文件到 "C:\app\TroughT\product\11.2.0\dbhome_1\NETWORK\ADMIN"
- 我变了 将 sqlnet.ora 中的 APP_BASE 变量 "C:\app\TroughT\product\11.2.0\dbhome_1\log"
- 我已经(目前)给出了 每个人都可以完全控制整个 dbhome_1 目录,并且 子目录
- 在 Oracle Net Manager 中,我测试了相关的 与我的 ASP.NET 中使用的相同安全凭据的连接 连接字符串,它测试正常
- 我添加了一个 TNS_ADMIN 系统变量,其值为“C:\app\TroughT\product\11.2.0\dbhome_1\NETWORK\ADMIN”
我们一定错过了什么,但我就是不知道是什么。请帮忙!
更新:
我发现用我的 tnsnames.ora 文件中的完整定义替换连接字符串中的 SID 确实有效。下面的例子。一定与 ASP.NET 未能找到我的 tnsnames.ora 文件有关,但我知道该文件是有效的,并且据我所知,我的所有系统变量都指向正确的位置。所以至少我现在正在工作,但我想了解为什么我的 tnsnames.ora 文件不起作用。
失败的连接字符串:
"Data source=RMSUSNAP;User ID=uuuu;Password=pppp;"
工作连接字符串:
"Data source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = replaced.host.name)(PORT = 1521))(CONNECT_DATA =(SID = rmsusnap)));User ID=uuuu;Password=pppp;"
tnsnames.ora 的相关部分:
RMSUSNAP.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = replaced.host.name)(PORT = 1521))
(CONNECT_DATA =(SID = rmsusnap))
)
【问题讨论】:
-
连接字符串是什么样的?
-
您是否尝试过在运行应用程序之前打开进程监视器,并找出您的应用程序试图在哪里找到 tnsnames.ora 文件?
-
@JoachimIsaksson "简单的数据源=RMSUSNAP;用户ID=uuuu;密码=pppp;"提供者名称为“System.Data.OracleClient” - 用户名和密码相同,我在 Net Manager 中测试连接。
-
@sahs 抱歉,不熟悉 Process Monitor - 这是 Oracle 的事情吗?在 Oracle 开始文件夹中看不到任何名称。将不胜感激指针。正如我所说,我是 Oracle 的新手,但我是一位经验丰富的 .NET 开发人员。
-
顺便说一下,.NET 应用程序在其他开发人员机器上运行良好,所以我假设它与我的 Oracle 设置有关。