我有这个运行sqlplus命令并生成输出的perl脚本。我没有粘贴整个脚本,而是粘贴必要的部分
my $cfg = new Config::Simple('/scripts/Voucher-State-Change/Voucher.conf'); #------Creating object to fetch data from Voucher.conf
my $circle = $cfg->param("circle");
my $basePath = $cfg->param("basepath");
my $days_ago = $cfg->param("days_ago");
my $sqlplus = $cfg->param("sqlplus");
my $user = $cfg->param("user");
my $password = $cfg->param("password");
my $database = $cfg->param("database");
my $days_log_del = $cfg->param("days_log_del");
my $days_output_del = $cfg->param("days_output_del");
my $SQLPLUS = "$sqlplus -S ${user}/${password}"."@"."${database}";
#--------------- Now connecting to sqlplus
`$SQLPLUS \@${basePath}/VoucherQuery.sql $startdate> ${basePath}/logs/QueryResult.$currentDate.log`;
if ( $? == 0) {
logger("Processing with the sqlplus is completed. For more details check ${basePath}/logs/QueryResult.$currentDate.log ", 0); }
else {
logger("Not able to fetch data from sqlplus. Please check", 1); exit;}
这是我的conf文件
circle=AP
basepath=/scripts/Voucher-State-Change
days_ago=2288
sqlplus=/opt/oracle/product/11g/db_1/bin/sqlplus
user=system
password=coolman7
database=vsdb
days_log_del=10
days_output_del=10
现在的问题是,当我通过命令提示符运行脚本时,它工作正常,但是通过crontab,它无法连接到sqlplus并将我的自定义错误抛给我。 “无法从sqlplus获取数据。请检查”。我正在使用solaris服务器。我为每个文件和目录提供了绝对路径。请问有人请帮忙吗?
附加:我查了一下,发现我的ORACLE_HOME显示的是以下路径。
echo $ORACLE_HOME
/opt/oracle/product/11g/db_1
我通过这样做改变了它。
ORACLE_HOME=/opt/oracle/product/11g/db_1/bin
export ORACLE_HOME
但它仍然显示相同的错误。以下是我的cron声明。我试过两次都没有成功。
04 12 * * * ORACLE_HOME=/opt/oracle/product/11g/db_1/bin; export ORACLE_HOME; perl /scripts/Voucher-State-Change/VoucherStateChange.pl > /scripts/log.txt
02 12 * * * perl /scripts/Voucher-State-Change/VoucherStateChange.pl > /scripts/log.txt
我也将变量设置在“/ etc / default / cron”中,就像下面的文件一样,但它也没有用。
ORACLE_HOME=/opt/oracle/product/11g/db_1/bin
我发现ORACLE_SID变量的内容很少,但不确定它是什么以及在哪里使用它...在我的机器上它的值是空的..