【问题标题】:Perl script raising oci.dll error, DBDPerl 脚本引发 oci.dll 错误,DBD
【发布时间】:2011-10-14 10:02:46
【问题描述】:

我有 perl 脚本,它连接到 Oracle 数据库,打开一个文本文件并将文件中的数据加载到数据库表中,该脚本在我的开发机器(windows xp 32 位)上完美运行,但是当我加载脚本到生产服务器(windows 2003 64 位)并从命令行运行它,它会打开一个 perl.exe - 无法找到组件窗口,消息说

此应用程序无法启动,因为找不到 OCI.dll。重新安装应用程序可能会解决此问题。

命令行输出为:

install_driver(Oracle) 失败:无法加载 'C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll' 用于模块 DBD::Oracle: load_file:%1 不是有效的 Win32 应用程序 C:/Perl64/lib/DynaLoader.pm line 191. at (eval 14) line3 编译 在(eval 14)第 3 行的要求中失败。也许是必需的共享 库或 dll 未安装在预期的位置 c:\warranty\warrantyImport.pl 第 15 行

我已经重新安装了 oracle 客户端,我尝试卸载活动 perl 和 oracle 客户端,然后在 perl 之前安装 oracle 客户端,因为听说这可能会导致问题。

我认为这可能是权限,所以我编写了一个简单的 perl 脚本来打开 oci.dll,如果无法打开它会引发错误,它能够正确打开它。

我已确保 C:\oracle\product\10.2.0\client_1\bin 位于 PATH 环境变量中。

我可以使用 SQLPlus 连接到数据库

我已将 OCI.dll 添加到与 perl 脚本相同的目录中。

我现在终于没有想法了....任何人都可以提出任何建议,我正在努力让它发挥作用。

详情 服务器正在运行 ActivePerl 5.14.1 Build 1401(64 位) Oracle数据库是10g Oracle 客户端是 10.2.0

【问题讨论】:

    标签: windows perl oracle-call-interface dbd


    【解决方案1】:

    您是否混合了一些 32 位和 64 位组件。显然,您需要 64 位 Perl、64 位 DBI 和 DBD::Oracle 以及用于 Oracle 客户端的 64 位 dll。我只建议您检查,因为错误显示“不是有效的 Win32 应用程序”。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,但对于 64 位版本的 Perl。我设法通过获取正确的客户端库并阅读本指南来解决它:
      http://www.pythian.com/news/11115/dbdoracle-and-windows-64bit/

      基本上,我运行的是 Oracle 11g XE R2,它只有 32 位。所以我怀疑它正在寻找 64 位客户端库,但没有找到它们。所以我下载了:
      Instantclient-basic-windows.x64-11.2.0.3.0.zip
      Instantclient-sqlplus-windows.x64-11.2.0.3.0.zip
      Instantclient-sdk-windows.x64-11.2.0.3.0.zip
      发件人:
      http://www.oracle.com/technetwork/topics/winx64soft-089540.html
      并安装到 c:\oracle\instantclient_11_2

      我将这些添加到我的路径中:
      C:>设置 PATH = c:\oracle\instantclient_11_2;%PATH%
      但不幸的是错误仍然存​​在:(

      在检查我的路径时:
      回显 %PATH%
      我可以看到该集合被忽略了。我猜这是权限问题。

      所以我编辑了系统路径变量并重新启动了命令提示符。这解决了问题并允许我连接:)

      【讨论】:

      • 太棒了,不敢相信我以某种方式下载了 32 位即时客户端...他们的下载系统没有提供从“正常”32 位下载页面到 64 位的链接位一,所以,如果谷歌直接带你到 32 位,你永远不知道它甚至存在......
      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2012-02-09
      • 2011-08-23
      • 2012-12-18
      • 2019-02-09
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多