将 oracle 客户端从 win7/32 迁移到 win10/64

Posted

技术标签:

【中文标题】将 oracle 客户端从 win7/32 迁移到 win10/64【英文标题】:moving oracle client from win7/32 to win10/64 【发布时间】:2021-03-18 13:26:56 【问题描述】:

我正在尝试在 Windows 10 上设置 Oracle 即时客户端 ODBC 驱动程序,因为我们正在将应用程序从 Windows 7 / 32 位移动到 Windows 10 / 64 位。 Windows 7 平台使用 Microsoft ODBC Driver for Oracle 工作,但该驱动程序已弃用。所以我正在尝试安装 64 位 Oracle 即时客户端。尝试连接时,我收到 TNS 适配器协议错误。我所做的每一次搜索都会引导我找到有关检查服务器的解决方案,但服务器在企业中运行良好。我没有安装实际的 Oracle 客户端,只安装了 ODBC 驱动程序。使用以下连接字符串

Driver=Oracle in instantclient_11_2;Server=(DESCRIPTION=(ADDRESS=(PROTOCOL = TCP)(HOST = redacted)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID=redacted))); Uid=redacted;Pwd=redacted;

【问题讨论】:

【参考方案1】:

您使用哪个客户端应用程序?

如果这是一个 32 位应用程序(这似乎是因为在您使用仅存在于 32 位的 Microsoft ODBC 驱动程序之前),那么 ODBC 驱动程序也必须是 32 位的!你不能混合架构。

当然,您可以在 64 位 Windows 上安装 32 位应用程序/驱动程序。

ODBC 驱动程序需要和 Oracle 客户端,但是看起来您已经安装了它。

从连接字符串中删除空格字符。

如果您需要同时安装 32 位和 64 位 ODBC 驱动程序,请按照以下说明操作:BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed

【讨论】:

应用程序已经被软件供应商在 64 位架构上重新编译,因此我们必须迁移到 64 位 ODBC 驱动程序。【参考方案2】:

我解决了这个问题。

我为要使用的连接创建了一个 ODBC 数据源,并将连接字符串更改为

dsn=redacted;uid=redacted;pwd=redacted

还在c:\oracle\instantclient_19_10\network\admin\目录下安装了tnsnames.ora,并将TNS_ADMIN系统环境变量设置为c:\oracle\instantclient_19_10

【讨论】:

为了完整起见,请查看Connection Strings。 Microsoft ODBC 驱动程序使用SERVER=xyz 而Oracle ODBC 驱动程序使用DBQ=xyz 也许这是您问题的根本原因。 谢谢。我没有使用该页面指定的 Oracle ODBC 驱动器。 oracle.com/database/technologies/instant-client/… 提供了一个 Oracle 即时客户端软件包

以上是关于将 oracle 客户端从 win7/32 迁移到 win10/64的主要内容,如果未能解决你的问题,请参考以下文章

各路高手,win7 32位按照oracle时报错。在网上查了很多信息都未果。大家指点指点!

我可以使用 imp/exp 工具将数据库从 Oracle 9 迁移到 Oracle 10

怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL

如何将MySQL数据库迁移到Oracle数据库

将 dateadd 和 datepart 从 sybase 迁移到 oracle

将数据库从 oracle 11g 迁移到 MySql 5.7 的优点、缺点和问题是啥?