ORA - 04020:尝试锁定对象时检测到死锁

时间:2016-06-23 19:21:19

标签: oracle plsql

获得ORA-04020: deadlock detected while trying to lock object并且我相信错误的来源可能是这些陈述:

  v_sql := 'DELETE FROM ' || in_table_name || ' SUBPARTITION (' || v_subpart_name || ')';
  EXECUTE IMMEDIATE v_sql;

  v_sql := 'ALTER TABLE ' || in_table_name || ' TRUNCATE SUBPARTITION ' || v_subpart_name;
  EXECUTE IMMEDIATE v_sql;

有关如何解决此问题的任何想法?可能是ALTER语句抛出错误,因为DELETE就在它之前吗?不确定,我认为ALTER只有在DELETE完成后才会执行。或者可能是程序在退出和重新执行之前不等待ALTER完成?

1 个答案:

答案 0 :(得分:1)

如果您已经在进行TRUNCATE SUBPARTITION,那么为什么需要删除。 TRUNCATE是从表中删除数据的有效方法。

另外,你必须在删除后进行提交,然后才允许截断。

此致 拉姆基