我是一名新的 (ASP.NET) 开发人员,从现有项目开始,其中一部分连接到 Oracle 数据库。我以前没有使用过Oracle。
在 Web 应用程序尝试连接到 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 网络管理器中,我使用 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))
)