获得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
完成?
答案 0 :(得分:1)
如果您已经在进行TRUNCATE SUBPARTITION,那么为什么需要删除。 TRUNCATE是从表中删除数据的有效方法。
另外,你必须在删除后进行提交,然后才允许截断。
此致 拉姆基