Valor SQLPLUS na variável - não funcionando a partir do crontab

1

Estou tentando armazenar o valor sqlplus em uma variável no Linux.

O script está funcionando bem quando acionado manualmente. Mas o valor na variável não é armazenado quando o script é chamado de crontab.

Código:

#!/bin/ksh
~/.profile
v='sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
'
echo "$v"
    
por user3377923 13.01.2015 / 19:00

1 resposta

3

Executar sqlplus de uma entrada crontab pode ser frustrante. Você obtém uma variável PATH muito esparsa, pois o shell que crond forks não lê o arquivo "rc".

No seu arquivo ".profile" você define ORACLE_HOME? Você inclui $ ORACLE_HOME / bin no PATH e exporta ORACLE_HOME e PATH? Verifique isso primeiro. Além disso, devo observar que seu código mostra o ksh em questão executando não terceirizando o arquivo ~/.profile . Seu script deve "fonte" desse arquivo. Eu também pareço ter uma superstição sobre como configurar e exportar TNS_ADMIN, assim:

export TNS_ADMIN=$ORACLE_HOME/network/admin

Você pode incluir o ID do usuário e a senha do banco de dados no "documento here" usando a opção /nolog de sqlplus para evitar que os detalhes sejam exibidos para quem executar ps :

sqlplus -s /nolog 2>&1 << END_ZERO_ROW_CHECK
connect $USER_NAME/$PASSWORD@$SID_INSTANCE
whenever oserror exit failure
whenever sqlerror exit failure
...
END_ZERO_ROW_CHECK
    
por 13.01.2015 / 19:50