我有一个CGI Perl脚本,它将从Oracle数据库运行select语句来获取记录。此脚本在链接了cgi-bin的Apache上运行。运行良好。
由于故障切换,我们将硬盘移到了具有类似设置的备份服务器上。然而,当我们运行脚本时,会显示以下错误:
install_driver(Oracle) failed: Can't load '/u02/system/perl/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.11.1: cannot open shared object file: No such file or directory at /u02/system/perl/usr/lib64/perl5/DynaLoader.pm line 200.
我检查了我的ORACLE_HOME
和LD_LIBRARY_PATH
变量,它们都指向正确的oracle客户端。也可以尝试locate libclntsh.so.11.1
,并在授予权限的情况下在正确的目录中找到该文件。
还添加了一个oracle.conf
文件,该文件的路径为/etc/ld.so.conf.d
中的oracle lib目录
所有这些,它仍然显示出相同的错误。我没什么想法了。。。。
任何建议或建议都将不胜感激。非常感谢。
您已经介绍了一些基本知识,这很好:确保库存在,确保程序具有读取/执行权限,以及为ORACLE_HOME和LD_LIBRARY_PATH设置环境变量。
您需要递归地检查依赖关系。
ldd /u02/system/perl/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so
应该向您显示.的任何依赖项,因此无法加载。DBD::Oracle也对Oracle客户端的版本敏感。如果Oracle客户端的版本或位置发生了更改(或者其他所有操作都失败时),则可能需要重新编译DBD::Oracle。