L'environnement shell est très important pour Oracle et n'existe presque pas lors de l'utilisation de cron. Comme toujours, il existe plusieurs façons de résoudre ce problème.
- utiliser des chemins complets qualifiés - un peu rigides
- faire le script pour configurer son propre environnement d'exécution
- configurer l'environnement d'exécution dans cron, lors de l'appel du script.
Une manière assez standard de configurer votre environnement à partir du script consiste à utiliser le script oraenv, normalement situé dans /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
à partir de la ligne cron :
10 10 * * * $HOME/.profile;$HOME/bin/your_script >$HOME/log/your_script.log 2>&1
Cela suppose que le .profile n'est pas interactif et exporte l'environnement nécessaire.