Выполнение сообщения Oracle sqlplus из Unix - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть процесс, который подключается к Oracle sqlplus из оболочки, которая запрашивает пароль, а затем начинает выполнение процедуры Store следующим образом:

echo -e "Enter Password"
read -s pass

$ORACLE_HOME/bin/sqlplus -s -l /nolog << EOF >> $log_deploy
connect $schema/$pass@$db
@$sql/main.sql;
EOF

Дело в том, что этот процесс имеет переменную длительность и выполняется оператором с консоли сервера.

Существует какой-то способ уведомлять оператора каждые 10 минут, например "Процесс продолжается в выполнении" ? Поскольку однажды внутри sqlplus остается в нем, пока выполнение sp не закончится и не вернется в консоль.

Есть предложения или идеи?

1 Ответ

0 голосов
/ 04 сентября 2018

Поместите sqlplus heredoc в фоновом режиме. Дождитесь завершения последнего идентификатора фонового процесса ($!) И sleep в течение некоторого количества секунд, проверив его завершение (кстати, 10 минут - это большой интервал)

intrvl=100
sqlplus  <<EOF &
input
EOF
PID=$!  #get the pid of the last background process.

while [ 1 ]
do
if ps -p $PID > /dev/null
 then
   echo "The process continues in execution"
   sleep $intrvl
 else 
   break
 fi
done

Сказав, что хорошим подходом должно быть исключение части мониторинга из кода обработки.

...