【发布时间】:2015-04-14 15:42:17
【问题描述】:
我们在 Oracle 数据库中有一个表,它充当两个系统之间的中介。系统 A 将对表进行批量插入,每 50,000 行提交一次。系统B会不断查询表的记录,如果有记录,会发出SELECT .. FOR UPDATE语句来处理记录(系统B是多线程的)。
问题是,当系统 B 查询表时,系统 A 仍有可能批量插入数据。这可能会导致系统 B 获取不完整的数据集进行处理。
我们是否可以知道批量插入是否已停止?如果我们想监控桌子上是否有任何insert活动,有可能吗?不幸的是,我们无法控制系统 A 的工作方式,因此我们无法让它向我们发送任何“结束”信号。
感谢任何 cmets。谢谢。
【问题讨论】:
-
您可以查询活动的数据库会话以查看系统 A 是否仍然连接。
-
如果系统A连接到数据库,但它正在做其他事情没关系,问题是我们是否可以知道它已经停止向表中放入数据
-
系统B一次处理多少条记录???
-
U 可以有一个临时表,其中包含表的主键和已处理标志,以便您知道哪些行已处理,其余行可以在系统 B 中处理
-
您可以检查 SQL 系统 A 当前正在运行什么查询。
标签: oracle bulkinsert