Значение SQLPLUS в переменной — не работает из crontab

Значение SQLPLUS в переменной — не работает из crontab

Я пытаюсь сохранить значение sqlplus в переменной в Linux.

Скрипт работает нормально при ручном запуске. Но значение в переменной не сохраняется, когда скрипт вызывается из crontab.

Код:

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

решение1

Запуск sqlplusиз записи crontab может быть разочаровывающим. Вы получаете очень разреженную переменную PATH, поскольку оболочка, которая crondразветвляется, не читает файл "rc".

В вашем файле ".profile" вы устанавливаете ORACLE_HOME? Вы включаете $ORACLE_HOME/bin в PATH и экспортируете ORACLE_HOME и PATH? Проверьте это в первую очередь. Также, я должен отметить, что ваш код показывает kshвопросвыполнениенетпоискфайл ~/.profile. Ваш скрипт должен "использовать" этот файл. У меня также, похоже, есть суеверие по поводу настройки и экспорта TNS_ADMIN, например:

export TNS_ADMIN=$ORACLE_HOME/network/admin

Вы можете включить идентификатор пользователя базы данных и пароль в «документ here», используя опцию , /nologчтобы sqlplusизбежать отображения этих данных тем, кто запускает 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

Связанный контент