Как установить время ожидания для sql, присутствующего в приложении, если оно заняло более определенного периода времени? - PullRequest
0 голосов
/ 16 апреля 2019

На одном из моих серверов есть 3 экземпляра определенного процесса (они запускаются ежедневно в течение примерно 30 минут и завершаются), теперь проблема в том, что иногда любой из них застревает в запросе SQL, а затем застревает навсегда, покаЯ иду и убиваю его вручную. Сервер Exadata Oracle 11g

SET LOCK_TIMEOUT 1800;это еще больше испортит ситуацию, поскольку у меня уже есть наши межпроцессные блокировки.Я ищу другой вариант тайм-аута, если есть какие-либо, которые могут быть запланированы в файле свойств в Unix для этого сервера.Также, если какой-то другой подход поможет мне автоматически остановить зависший SQL.

for i in `jps | grep -i um | cut -d" " -f1`
do ps -eaf | grep $i | grep java | awk 'BEGIN{"date +%H:%M" | getline;d=$0}{print d,$5;e=to_min(d)-to_min($5)
if(e>=120){print e}}
function to_min(a){split(a,b,":")
c=(b[1]*60)+b[2]
return c}'
done

гм (имя процесса)

Здесь я только что написал этот сценарий, который можно запланировать в crontab, чтобы мы могли автоматизировать его отправку электронной почты, если любой такой процесс выполняется сэто имя дольше 2 часов.Но в идеале это не очень хороший подход.

Ожидается некоторая опция, которую можно настроить так, чтобы долгосрочный SQL завершался сам по себе через 2 часа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...