l'ambiente shell è molto importante per Oracle e quasi non è presente quando si utilizza cron. Come sempre ci sono diversi modi per risolvere questo problema.
- utilizza percorsi completi, un po' rigidi
- crea lo script per configurare il proprio ambiente di esecuzione
- imposta l'ambiente di esecuzione in cron, quando si chiama lo script.
Un modo praticamente standard per configurare il tuo ambiente dall'interno dello script è usare lo script oraenv, normalmente situato in /usr/local/bin
ORACLE_SID={your_sid}
ORAENV_ASK=NO
type oraenv >/dev/null 2>&1 || PATH=/usr/local/bin:$PATH
. oraenv
SQLPATH=$HOME/sql
export SQLPATH
do your stuff
dalla riga cron:
10 10 * * * $HOME/.profile;$HOME/bin/your_script >$HOME/log/your_script.log 2>&1
Ciò presuppone che il .profile non sia interattivo ed esporti l'ambiente necessario.