关于死锁问题,在ETL过程中

0
现有表TAB,其中字段 A(年月),B(行政区划),C(rownum),D
表数据量很大,一个月大约数据为1000W左右,所以考虑分并发处理
即把每月,单行政区划(B)按数据量大小分成若干个子任务进行,
并发的分离由C决定,即用C的行号来确定其属于某个子任务,处理即更行D字段
在更新之前先把D按子任务UPDATE为空,此处报死锁,已确定rownum分并发并无重复,
且死锁为多行政区划互相产生,bitmap索引已重建为普通索引,仍无法解决
怀疑为资源不足导致次问题

发生死锁SQL如下
UPDATE TAB@DB   set D= '' WHERE A= 201108   AND B= TO_CHAR(510107)   AND C>= 1 AND C<= 131072

错误报告如下:
ORA-00060: deadlock detected while waiting for resource
ORA-02063: preceding line from DB   ORA-06512: at "PKG_ETL", line 2409

ORA-02049: timeout: distributed transaction waiting for lock
ORA-02063: preceding line from DB   ORA-06512: at "PKG_ETL", line 2409

2409行即EXCUTE该SQL,求各位大神帮忙分析下,非常感谢
已邀请:

要回复问题请先登录注册