如果花费了超过一定时间,如何为应用程序中存在的SQL设置超时?

时间:2019-04-16 10:19:39

标签: java sql unix

在我的一台服务器中,有3个特定进程的实例(它们每天运行约30分钟并完成),现在的麻烦是有时它们中的一个卡在SQL查询中,然后永久卡住,直到我去手动杀了它。Oracle11g Exadata Server

SETLOCK_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

um(进程名称)

在这里,我刚刚编写了这个脚本,可以在crontab中安排该脚本,以便在任何以该名称运行超过2小时的进程时,可以自动执行该脚本以发送电子邮件。但这并不是理想的方法。

期望可以配置一些选项,以便长时间运行的SQL在2小时后自行终止。

0 个答案:

没有答案