现有表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 2409ORA-02049: timeout: distributed transaction waiting for lock
ORA-02063: preceding line from DB ORA-06512: at "PKG_ETL", line 24092409行即EXCUTE该SQL,求各位大神帮忙分析下,非常感谢
表数据量很大,一个月大约数据为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 2409ORA-02049: timeout: distributed transaction waiting for lock
ORA-02063: preceding line from DB ORA-06512: at "PKG_ETL", line 24092409行即EXCUTE该SQL,求各位大神帮忙分析下,非常感谢
select OBJECT_ID from dba_objects where object_name='TAB');
SELECT * FROM DBA_BLOCKERS;
确认没有bitmap索引。
确认并发进程更改的数据没有重合。
单个进程执行是否正常?