Autonomous Database(ADB)并行DML禁用及ORA-12838报错处理方案咨询
ADB共享版并行DML触发ORA-12838报错的处理方案
ORA-12838报错触发的核心原因是ADB共享版的low、medium、high三类默认服务默认启用并行DML特性,同一个事务内对同一对象执行并行修改操作后,再次访问该对象就会抛出该错误。
官方推荐处理方案如下:
- 事务拆分:执行完并行DML操作后,先运行
COMMIT提交当前事务,再执行该对象的后续读/写操作,是兼容性最高的处理方案,无需调整任何并行配置。 - 会话级临时关闭并行DML:仅对当前会话生效,不会影响其他会话的并行配置,执行以下命令即可禁用:
需要恢复并行DML能力时执行:ALTER SESSION DISABLE PARALLEL DML;ALTER SESSION ENABLE PARALLEL DML; - 语句级强制关闭并行:针对特定DML语句添加
/*+ NO_PARALLEL */提示即可,不影响同会话内其他语句的并行执行能力,示例如下:INSERT /*+ NO_PARALLEL */ INTO your_table(col1,col2) VALUES (val1,val2);
并行DML禁用支持说明
ADB共享版不支持全局禁用默认服务的并行DML特性,仅支持上文提到的会话级、语句级两种维度按需临时关闭并行DML,全局并行DML配置由云平台统一管理,用户无权限修改。
内容的提问来源于stack exchange,提问作者Nilay Panchal
相关产品推荐
相关产品推荐

