O ambiente shell é muito importante para o Oracle e quase não existe ao usar o cron. Como sempre, existem várias maneiras de resolver isso.
- use caminhos totalmente qualificados - um pouco inflexíveis
- faça o script para configurar seu próprio ambiente de execução
- configure o ambiente de execução no cron, ao chamar o script.
Uma maneira praticamente padrão de configurar seu ambiente a partir do script é usando o script oraenv, normalmente localizado em /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
da linha cron:
10 10 * * * $HOME/.profile;$HOME/bin/your_script >$HOME/log/your_script.log 2>&1
Isso pressupõe que o .profile não seja interativo e exporte o ambiente necessário.