Context:Grails 2.1,使用Groovy SQL执行SQL语句。数据库是在RedHat VM中运行的Oracle 11G。 Grails以交互模式运行,但以WAR运行时行为没有区别。
通过Groovy SQL,我发出了一个带有这种结构的SQL语句:
insert into...
select ... from...
这会导致获取并插入@ 119K行。成功运行后,通常会在一分钟内完成。
此语句在整个数据导入应用程序的上下文中运行,该应用程序通常需要大约10分钟才能运行并包含许多其他查询。
这是行为:
所以:第一次通过,没问题。第二次,它每次都挂在同一个地方。
如果我重新启动应用程序,它将再次正常运行。
这里变得奇怪:我会让这个东西旋转一段时间,如果我关闭数据库,查询会继续运行。我没有错。
所以,如果这种行为听起来很熟悉,我对解决方案感兴趣。
如果你有关于如何诊断它的想法,我也对这些感兴趣。我是一名应用程序开发人员,比Oracle方面更熟悉Java方面,fwiw。我正在努力找到一个内部的Oracle DBA来协助,但至少在短期内我会靠自己。
感谢您的建议。
答案 0 :(得分:0)
由于你说重新启动应用程序使它再次起作用表明它在SQL端没有任何东西,比如索引,所以它可能与Hibernate会话大小有关,你可能会最大化会话,see this answer that may help