【问题标题】:Oracle: ORA-12154: TNS issue: Excel 64-bit/Windows 10 64-bitOracle:ORA-12154:TNS 问题:Excel 64 位/Windows 10 64 位
【发布时间】:2018-11-06 01:53:08
【问题描述】:

我使用的是 Windows 10 64 位和 Office 2016 64 位。 只需使用 Excel 连接到 Oracle 11g (11.2.0) 数据库(以使用 Power Query/BI)。

首先安装它: 适用于 Microsoft Windows (x64) 的 Oracle Database 11g 第 2 版客户端 (11.2.0.1.0) (https://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html)

我收到了缺少 64 位组件的错误,然后我安装了: 64 位 ODAC 11.2 版本 6 (11.2.0.4.0) Xcopy for Windows x64 (https://www.oracle.com/technetwork/database/windows/downloads/index-090165.html)

现在出现的错误是: "[DataSource.Error] Oracle: ORA-12154: TNS: 无法解析指定的连接标识符"

我已经使用 Windows 7 64 位和 Office 2016 32 位版本做了同样的事情,oracle 客户端也是如此,它没有安装 ODAC。 而且它过去工作得非常好。

我有相同的 TNSNAMES.ORA 文件,所有条目都很好,因为我知道它适用于 office 32 位。所以 TNSNAMES.ORA 文件不会是问题(位置> C:\oracle\product\11.2.0\client_1\Network\Admin)。

我从 Stack 帖子中尝试了很多东西,例如环境变量、注册表更改、安装检查……但我真的不明白。只需要 Excel 64 位即可连接 oracle 11g,仅此而已,但只有 32 位工作......

这似乎是一个非常具体的问题,它让我发疯。如果有人可以帮助我使用“简单”的解释,我将非常感激。

【问题讨论】:

    标签: excel oracle


    【解决方案1】:

    由于您没有提供太多信息,因此很难为您提供帮助,因此我将提供一些更通用的提示。

    所有组件都必须在相同的架构中。如果您的 Excel/Office 是 64 位的,那么 Oracle 客户端和 ODAC 也必须是 64 位的。数据库可以是 32 位的,也可以是 64 位的。

    当您想从 Excel 连接到 Oracle 数据库时,您可以使用 ODBC 驱动程序或 OLE DB 驱动程序。两者都可从 Microsoft 和 Oracle 获得。由于您没有提到任何 ODBC,我假设您使用的是 OLE DB 驱动程序。

    Microsoft ODBC 和 OLE DB 驱动程序都随您的 Windows 提供,但是它们是旧的(ODBC is deprecatedOLE DB is deprecated)并且它们仅适用于 32 位。这就是您可以仅使用 Oracle InstantClient 从 32 位 Excel 连接到 Oracle 的原因。

    如果您在 64 位上工作,那么您必须使用 Oracle 驱动程序,这也意味着您必须单独安装它,因为它们不是标准 Windows 安装的一部分 - 这是您安装的 ODAC 包。

    现在,当您收到ORA-12154: TNS:could not resolve the connect identifier specified 错误时,您的安装似乎可以正常工作。上面不同的驱动有不同的路径来查找tnsnames.ora文件,见Determining location of relevant tnsnames.ora file

    创建环境变量TNS_ADMIN=C:\oracle\product\11.2.0\client_1\Network\Admin,因为环境变量似乎比所有其他设置具有最高优先级。我认为您的应用程序应该能够解析别名。否则tnsnames.ora 文件中的数据可能是错误的(可能是错字)

    【讨论】:

    • 问题解决了!我在 HKEY_LOCAL_MACHINE> SOFTWARE> Oracle> KEY_odac 中将注册表项 ORACLE_HOME 路径更改为“C:\oracle\product\11.2.0\client_1\Network\Admin” 原始路径是“C:\oracle\” 不知道为什么,但我也有我的用户下的路径为“C:\app\saoeboei\product\11.2.0\client_1”,但没有 Network\Admin 文件夹,当然也没有 TNS 文件。我更改了注册表 KEY_OraClient11g_home1 的路径,并使用您提到的路径创建了变量。但是,只有通过更改 ODAC 注册表的 ORACLE_HOME 路径才能做到这一点。非常感谢您的帮助和快速回复。
    【解决方案2】:

    我安装了 32 位和 64 位 Oracle 客户端的 windows-10 64 位。在 IIS 上托管后,我能够连接 Toad 并将 asp.net 与 oracle 连接,但是通过 IIS-Express 在 Visual Studio 2017 中运行我遇到了 TNS 连接错误。

    安装“64-bit ODAC 12c Release 2 (12.1.0.1.2) for Windows x64”为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2019-03-18
      • 2011-12-12
      • 2018-03-26
      相关资源
      最近更新 更多