【问题标题】:Perl install_driver(Oracle) failed: - Can't load '../DBD/Oracle/Oracle.dll' for module DBD::Oracle Win64Perl install_driver(Oracle) 失败:-无法为模块 DBD::Oracle Win64 加载“../DBD/Oracle/Oracle.dll”
【发布时间】:2016-08-08 02:53:03
【问题描述】:

在使用 Perl 5.20.2 和 Oracle::DBD 时遇到问题,尝试连接到 Ora 12C DB 时出现以下错误,这里没有关于如何识别问题的想法。

install_driver(Oracle) failed: Can't load 'C:/Perl/site/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:%1 is not a valid Win32 application at C:/Perl/lib/DynaLoader.pm line 194.
  at (eval 72) line 3.
 Compilation failed in require at (eval 72) line 3

我的环境如下

  • Perl -v - 这是为 MSWin32-x86-multi-thread-64int 构建的 perl 5,版本 20,subversion 2 (v5.20.2)
  • 操作系统为 Win 2008 R2 SP1
  • Ora 客户端是 12.1.0(64 位)

Windows 环境变量

ORACLE_HOME=C:\Oracle12c\product\12.1.0\client_1

路径=C:\Oracle12c\product\12.1.0\client_1\bin;C:\Perl\site\bin;C:\Perl\bin;C:\Windows\system32;C:\Windows;C: \Windows\System32\Wbem;C:\Windows\System32\WindowsPo werShell\v1.0\;c:\dmake;D:\NTRESKIT

TNS_ADMIN=C:\Oracle12c\product\12.1.0\client_1\bin

【问题讨论】:

  • 你安装了Oracle客户端的OCI组件吗?您是否正在安装适用于 12c 的 Oracle Instant Client?
  • Oracle Client 12c 已安装,我确实在 12.1.0\client_1\BIN 文件夹中看到了 ocu.dll

标签: oracle perl


【解决方案1】:

除了我上面的评论,请在stackoverflow上查看以下内容:

Perl_and_Oracle_DBD

【讨论】:

  • 好的,请投够反对票。我只是想建议,正如链接中指出的那样,问题可能是权限问题。
  • 感谢您的协助,这不是文件权限问题,而是 Perl 32 位版本尝试与 Ora 64 位客户端通信的问题,不公平,您被否决了合法帮助的人。
  • 感谢 user2574678。我很高兴你想通了并提供了解决方案。毕竟,这就是我们在这里的目的!
【解决方案2】:

想通了...问题不是文件权限问题,线索在“...不是有效的 Win32 应用程序”措辞中。

我使用的是 Ora 64 位客户端而不是 32 位,删除了 Oracle 12c 64 位客户端并安装了 Oracle 12c 32 位客户端(您也可以安装 11g 驱动程序(显然 Oracle 客户端支持一个版本)向前一个版本))。

我需要完整的 12c Ora 客户端安装程序,因为我需要访问 sqlloader 等数据库工具,注意 12c Oracle 32 位安装程序中存在错误,必须修改安装/ oraparam.ini 并将 MSVCREDIST_LOC=vcredist_x64.exe 替换为 MSVCREDIST_LOC=vcredist_x86.exe,我花了一段时间才找到安装程序,链接在这里,http://www.oracle.com/technetwork/database/enterpriseedition/downloads/database12c-win64-download-2297732.html,网址底部的 32 位驱动程序,希望他们能修复安装程序)

另外,添加 ORACLE_HOME Win 环境路径也很重要,我还将 Oracle 客户端添加到路径中,并确保它位于我的 Windows 路径中的 Perl 条目之前。

【讨论】:

  • 感谢您提供的详细信息,它有所帮助。需要匹配 PERL 位的是路径中的 oracle 客户端。 ORACLE_HOME 对我的安装没有影响。
猜你喜欢
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多