in reply to Need Help regarding perl script in unix cronjob...

Like it says in the docs:
$dbh = DBI->connect($data_source, $username, $password) or die $DBI::errstr;
Probably you're either missing some crucial environment variables and the database can't be found (cron jobs usually run with a much reduced set of enviroment variables) or you're running as a user that doesn't have permission to connect.

Replies are listed 'Best First'.
Re^2: Need Help regarding perl script in unix cronjob...
by derby (Abbot) on Dec 11, 2006 at 13:38 UTC

    I agree with [id://Joost]. More than likely, ORACLE_HOME is set for your user environment but not for your cron. We have a standardized wrapper for cron jobs:

    #!/bin/sh # # Generic cron job wrapper # # Modify recipient list as needed. RECIPIENTS="root@foo.com" CRON_OUTPUT=/tmp/cron.output.$$ ( ########################################################### # Insert cron job statements here # PREFIX=/path/to/job # ENV_VAR=what_you_need # export ENV_VAR # cd $PREFIX # ./job ########################################################### ) > $CRON_OUTPUT 2>&1 if [ -s $CRON_OUTPUT ] then ( echo 'Your "cron" job on '`hostname` echo "" echo "$0" echo "" echo "produced the following output:" echo "" cat $CRON_OUTPUT ) | mail -s 'Output from "cron" command' $RECIPIENTS fi /bin/rm $CRON_OUTPUT
    Maybe a bit overkill but by always using a wrapper, I never forget (well almost never) to set need env vars.

    -derby