Perl install_driver(Oracle)失败: - 无法加载' ../ DBD / Oracle / Oracle.dll'对于模块DBD :: Oracle Win64

时间:2016-04-16 00:39:15

标签: oracle perl

遇到Perl 5.20.2和Oracle :: DBD的问题,在尝试连接到Ora 12C数据库时遇到以下错误,但是没有关于如何识别错误的想法。

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 \产品\ 12.1.0 \ client_1与

路径= C:\ Oracle12c \产品\ 12.1.0 \的Client_1 \ BIN; C:\ Perl的\站点\ BIN; C:\ Perl的\仓; C:\ Windows \ System32下; C:\视窗; C: \ Windows \ System32下\ WBEM; C:\ WINDOWS \ SYSTEM32 \ WindowsPo werShell \ V1.0 \; C:\的dmake; d:\ NTRESKIT

TNS_ADMIN = C:\ Oracle12c \产品\ 12.1.0 \的Client_1 \ BIN

2 个答案:

答案 0 :(得分:1)

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

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

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

另外,添加ORACLE_HOME Win env路径非常重要,我还将Oracle客户端添加到Path中,并确保它在我的Windows路径中的Perl条目之前。

答案 1 :(得分:0)

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

Perl_and_Oracle_DBD