El entorno de shell es muy importante para Oracle y casi no existe cuando se usa cron. Como siempre, hay varias formas de solucionar esto.
- usar rutas calificadas completas - un poco inflexible
- hacer el script para configurar su propio entorno de ejecución
- configure el entorno de ejecución en cron, cuando llame al script.
Una forma bastante estándar de configurar su entorno desde el script es usando el script oraenv, normalmente ubicado en /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
desde la línea cron:
10 10 * * * $HOME/.profile;$HOME/bin/your_script >$HOME/log/your_script.log 2>&1
Esto supone que el .profile no es interactivo y exporta el entorno necesario.