Linux上crontab调用perl 访问oracle的环境变量问题?

[复制链接]
查看11 | 回复3 | 2013-12-18 09:29:09 | 显示全部楼层 |阅读模式
基本要求是用perl脚本从oracle导出数据,然后倒入到postgresql,脚本通过export 环境变量后 在console上可以运行,但是把环境变量配置到perl里面就不能运行了,主要是想通过crontab自动调用,会出现错误,请各位帮手看看,谢谢。系统环境: oracle 10.2.0.1 PostgreSQL 8.4centos 4

这个perl脚本的设置:
$ENV{"PATH"} = "/home/oracle/bin:/data/oracle/product/10.2.0/db1/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/j2sdk/bin:/home/oracle/bin:/opt/PostgreSQL/8.4/bin";
$ENV{"POSTGRES_HOME"} = "/opt/PostgreSQL/8.4";
$ENV{"LD_LIBRARY_PATH"} = "/data/oracle/product/10.2.0/db1/lib:/lib:/usr/lib:/opt/PostgreSQL/8.4/lib";
$ENV{"PGDATA"} = "/opt/PostgreSQL/8.4/data";
$ENV{"MANPATH"} = "/opt/PostgreSQL/8.4/man";
$ENV{"ORACLE_HOME"} = "/data/oracle/product/10.2.0/db1";
$ENV{"ORACLE_SID"} = "orcl";
错误(同时访问postgresql也会出现类似问题)
install_driver(Oracle) failed: Can't load '/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
at (eval 5) line 3
Compilation failed in require at (eval 5) line 3.
Perhaps a required shared library or dll isn't installed where expected
at /home/oracle/pis/pis.pl line 30
回复

使用道具 举报

千问 | 2013-12-18 09:29:09 | 显示全部楼层
我也遇到同样问题了。
回复

使用道具 举报

千问 | 2013-12-18 09:29:09 | 显示全部楼层
应该是没指定库环境变量
回复

使用道具 举报

千问 | 2013-12-18 09:29:09 | 显示全部楼层
还有执行权限的问题,crontab里的任务执行时,不是通过执行者身份去调用的,所以环境变量和执行权限等都得设对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行