上下文:Grails 2.1,使用 Groovy SQL 执行 SQL 语句。数据库是在 RedHat VM 中运行的 Oracle 11G。Grails 以交互模式运行,尽管作为 WAR 运行在行为上没有区别。
通过 Groovy SQL,我发出了一个具有这种结构的 SQL 语句:
insert into...
select ... from...
这会导致提取和插入@119K 行。当它成功运行时,它通常在一分钟内完成。
此语句在整个数据导入应用程序的上下文中运行,该应用程序通常总共需要大约 10 分钟才能运行并包含许多其他查询。
这是行为:
- 我启动 Grails 应用程序
- 我开始在应用程序中导入数据。它按预期运行并导致数据发生重大变化
- 我再次启动应用程序。前几十个查询运行良好
- 在上述较大的插入处,它挂起。
所以:第一次通过,没有问题。第二次通过,它每次都挂在同一个地方。
如果我重新启动应用程序,它会再次运行良好。
这就是它变得奇怪的地方:我会让这个东西旋转一段时间,如果我关闭数据库,查询会继续运行。我没有错误。
所以,如果这种行为听起来很熟悉,我对解决方案很感兴趣。
如果你有关于如何诊断的想法,我也对这些感兴趣。我是一名应用程序开发人员,并且比 Oracle 方面更熟悉 Java 方面,fwiw。我正在尝试寻找一个内部的 Oracle DBA 来提供帮助,但至少在短期内我只能靠我自己。
谢谢你的建议。