10.2g 到 11.2g 和 Microsoft ODBC for Oracle 问题
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/9523523/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
10.2g to 11.2g and Microsoft ODBC for Oracle issues
提问by Alistair Laing
My team are trying to migrate from ORACLE 10g to 11g. These are our system specs:
我的团队正在尝试从 ORACLE 10g 迁移到 11g。这些是我们的系统规格:
Our current production server:
我们目前的生产服务器:
ORACLE 10.2g
ORACLE Application Express(3.0)
Apache
Red Hat 64 bit
Our new server (not yet in production):
我们的新服务器(尚未投入生产):
ORACLE 11.2g
ORACLE Application Express (4.1.1)
ORACLE HTTP Server
Red Hat 64 bit
We have managed to setup 11g, install APEX 4.1 and apply the recent patchset. The only bit that's delaying us with our migration is that our business users have access to Crystal Reports XI, MS Access/Excel 2003 whcih they use to connect to our database. A typical user has Window XP SP 3 (32bit) operating system. At the moment we are using Microsoft ODBC for Oracle driver (version 2.575.1132.00) to connect to our 10g Database and have not had any issues. However when we try connect to 11g we keep getting ORA-03113: end-of-file on communication channel errors. In ORACLE SQL Developer, we're able to connect to our 11g instance using the "basic" connection. I have also used the "TNS" entries and that works well.
我们已经成功安装了 11g,安装了 APEX 4.1 并应用了最近的补丁集。唯一延迟我们迁移的是我们的业务用户可以访问 Crystal Reports XI、MS Access/Excel 2003,他们用它们来连接到我们的数据库。典型用户使用 Window XP SP 3(32 位)操作系统。目前我们正在使用 Microsoft ODBC for Oracle 驱动程序(版本 2.575.1132.00)连接到我们的 10g 数据库并且没有任何问题。但是,当我们尝试连接到 11g 时,我们不断收到 ORA-03113: end-of-file on communication channel 错误。在 ORACLE SQL Developer 中,我们能够使用“基本”连接连接到我们的 11g 实例。我还使用了“TNS”条目,效果很好。
I think the business users obtained the Microsoft ODBC for Oracle driver by installing ORACLE Discover 3.1.3.6 which is used for another Oracle DB. They also have Oracle Client 7.3.3 which I can see Oracle73 (2.00.03.01) mentioned in the ODBM Data Source Admin screen.
我认为商业用户通过安装用于另一个 Oracle DB 的 ORACLE Discover 3.1.3.6 获得了 Microsoft ODBC for Oracle 驱动程序。他们还有 Oracle Client 7.3.3,我可以看到在 ODBM Data Source Admin 屏幕中提到的 Oracle73 (2.00.03.01)。
We have tried googling for a result and after various tests, we have come to the conclusion that it is an ODBC driver issue. As far as our understand it ORACLE SQL Developer uses a different JAVA based driver to connect so it does not use the Microsoft version.
我们尝试使用谷歌搜索结果,经过各种测试,我们得出结论,这是 ODBC 驱动程序问题。据我们了解,ORACLE SQL Developer 使用不同的基于 JAVA 的驱动程序进行连接,因此它不使用 Microsoft 版本。
Can someone confirm that our understanding is correct about there being a compatibility issues with Microsoft ODBC for Oracle driver (version 2.575.1132.00) and 11.2g? If so, what could you recommend a compatible driver to use with Crystal and Access/excel to extract the data?
有人可以确认我们对 Microsoft ODBC for Oracle 驱动程序(版本 2.575.1132.00)和 11.2g 存在兼容性问题的理解是正确的吗?如果是这样,您可以推荐什么兼容的驱动程序与 Crystal 和 Access/excel 一起使用来提取数据?
I think the business users obtained the Microsoft ODBC for Oracle driver by installing ORACLE Discover 3.1.3.6 which is used for another Oracle DB. They also have Oracle Client 7.3.3 which I can see Oracle73 (2.00.03.01) mentioned in the ODBM Data Source Admin screen.
我认为商业用户通过安装用于另一个 Oracle DB 的 ORACLE Discover 3.1.3.6 获得了 Microsoft ODBC for Oracle 驱动程序。他们还有 Oracle Client 7.3.3,我可以看到在 ODBM Data Source Admin 屏幕中提到的 Oracle73 (2.00.03.01)。
回答by Justin Cave
The Microsoft ODBC Driver for Oracle is written using an ancient version of the OCI (Oracle Call Interface) API that was deprecated when Oracle 8 was released (which was more than a decade and 11 major releases ago). Microsoft chose to desupport this driver rather than port it to the new version of the OCI API. Oracle 7 clients can connect to Oracle 10.2 databases but Oracle does not support connections between Oracle 7 clients and Oracle 11.2 databases.
适用于 Oracle 的 Microsoft ODBC 驱动程序是使用旧版本的 OCI(Oracle 调用接口)API 编写的,该 API 在 Oracle 8 发布时已被弃用(这是十多年以前的 11 个主要版本)。Microsoft 选择取消支持此驱动程序,而不是将其移植到新版本的 OCI API。Oracle 7 客户端可以连接到 Oracle 10.2 数据库,但 Oracle 不支持 Oracle 7 客户端和 Oracle 11.2 数据库之间的连接。
You'll need to upgrade the version of the Oracle client that is installed on the business user's machines and you'll want to use the latest version of the Oracle ODBC driver that is appropriate for that version of the Oracle client. Assuming that you install the 11.2 version of the Oracle client (the only reason not to upgrade all the way to the 11.2 client would be if the users still needed to connect to older databases that don't support connections from an 11.2 client), you'd want to use the most recent version of the 11.2.0.x Oracle ODBC driver. The Oracle client install should also have the option to install a version of the Oracle ODBC driver-- that should be sufficient as well.
您需要升级安装在业务用户计算机上的 Oracle 客户端版本,并且您需要使用适用于该版本 Oracle 客户端的最新版本的 Oracle ODBC 驱动程序。假设您安装了 11.2 版本的 Oracle 客户端(不一直升级到 11.2 客户端的唯一原因是用户仍然需要连接到不支持来自 11.2 客户端的连接的旧数据库),您想要使用最新版本的 11.2.0.x Oracle ODBC 驱动程序。Oracle 客户端安装还应该可以选择安装某个版本的 Oracle ODBC 驱动程序——这也应该足够了。