多个进程访问单个表进行插入

时间:2015-07-18 17:27:13

标签: c oracle

我有一个TABLE(PROCESSED_RECS),可以通过多个进程(大约60个)访问。所有这些都在此文件中插入recs。

目的:

  • 进程获取要处理的键的输入文件
  • 他们检查密钥是否已经过程 - 即在表PROCESSED_RECS
  • 要检查,处理只需触发INSERT查询
  • 如果他们得到了DUPLICATE ERROR freom Oracle,他们就知道它已经被处理了。

但我收到错误

  

ORA-00060:在等待资源时检测到死锁

达到上述情况的最佳做法是什么?

我正在使用PRO C语言<{1}}

1 个答案:

答案 0 :(得分:0)

设置单个进程从文件读取密钥并将其存储在队列(AQ)中。 60个进程可以安全地将密钥排入队列,如果密钥是否已处理,则无需执行任何检查。 两个进程不可能获得相同的密钥。如果进程失败,它将回滚,并且可以使用密钥继续执行其他进程。

Generell最佳实践是,SQL对于DIY排队实现并不是很好。