【发布时间】:2015-04-30 09:40:33
【问题描述】:
我在这里需要一点帮助,因为我正在努力为我的问题找到最佳解决方案。我用谷歌搜索并没有任何启发性的答案。
所以,首先,我会解释一下这个想法。
1 - 我有一个 java 应用程序,它使用 jdbc 在我的数据库 (Oracle DB) 中插入数据。
2 - 我的数据库在逻辑上一分为二。一部分包含带有导出信息(来自另一个应用程序)的表格,另一部分包含代表一些报告的表格。
3 - 我的 java 应用只在导出表中插入信息。
4 - 我开发了一些包,可以将数据从导出表转换为报告表(生成一些报告)。
5 - 此包计划每天执行 2、3 次
所以,我的问题是,当转换任务开始时,我想阻止新的 DML 操作。然后,当转换停止时,应该在此期间插入/更新的所有新数据将再次插入到导出表中。
我有两种方法:
1 - 在转换期间将 DML 操作偏离到临时表
2 - 锁定表,但我没有太多使用它的经验。我的主要问题是,我可以强制 jdbc 中的 DML 操作等到锁定完成吗?还没有尝试过,但是在这里和那里读到,在一些抛出 lockwaittimeout 异常或类似的东西之后。
哪位有经验的可以给我一些建议吗?
对我正在尝试做的事情有任何疑问。
【问题讨论】: