如果用了insert /*+ append */ into table as select .. from table 这样的操作来insert,必须在操作后commit,或是rollback,不然就不能再insert /*+ append */ into table as select .. from table 。
ORACLE报出错误如下:
ORA-12838: cannot read/modify an object after modifying it in parallel
解释如下:
ORA-12838 cannot read/modify an object after modifying it in parallel
Cause: Within the same transaction, an attempt was made to add read or modification statements on a table after it had been modified in parallel or with direct load. This is not permitted.
Action: Rewrite the transaction, or break it up into two transactions: one containing the initial modification and the second containing the parallel modification operation
Cause: Within the same transaction, an attempt was made to add read or modification statements on a table after it had been modified in parallel or with direct load. This is not permitted.
Action: Rewrite the transaction, or break it up into two transactions: one containing the initial modification and the second containing the parallel modification operation
insert /*+ append */ into table 操作对于这个表的锁级为6,而insert 操作对这个锁级为3 ,在同一session下,执行了上面这个操作,没有提交/回滚事务,然后有对table进行 select....等操作就会报上面的错误
本文介绍了在Oracle数据库中使用insert/*+append*/into操作时可能遇到的问题,特别是当在同一事务中对表进行了并行修改后,再次尝试读取或修改该表会触发ORA-12838错误的情况。为了避免这一问题,需要将事务拆分为两个部分。
1726

被折叠的 条评论
为什么被折叠?



