Valor SQLPLUS na variável - não funciona no crontab

Valor SQLPLUS na variável - não funciona no crontab

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 do crontab.

Código:

#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"

Responder1

Executar sqlplusa partir de uma entrada do crontab pode ser frustrante. Você obtém uma variável PATH muito esparsa, pois o shell que crondse bifurca não lê o arquivo "rc".

No seu arquivo ".profile" você configura 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 que kshestá em questãoexecutandonãoabastecimentoo ~/.profilearquivo. Seu script deve "fonte" desse arquivo. Também parece que tenho uma superstição sobre como configurar e exportar TNS_ADMIN, assim:

export TNS_ADMIN=$ORACLE_HOME/network/admin

Você pode incluir ID de usuário e senha do banco de dados no "documento aqui" usando a /nologopção de sqlpluspara evitar a exibição desses detalhes para qualquer pessoa que execute 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

informação relacionada