首页 > 解决方案 > Oracle:ORA-12154:TNS 问题:Excel 64 位/Windows 10 64 位

问题描述

我在 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 Release 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:could not resolve the connect identifier specified”

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

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

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

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

标签: exceloracle

解决方案


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

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

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

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

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

现在,当您遇到ORA-12154: TNS:could not resolve the connect identifier specified错误时,您的安装似乎可以正常工作。上面的不同驱动程序有不同的路径来查找tnsnames.ora文件,请参阅确定相关 tnsnames.ora 文件的位置

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


推荐阅读