insert/*+ append nologing*/ into URP3_TUSP.DM_GAAP_PARENT_COURSE_TMP(count_proj_code,sub_code, sub_name,data_source) 会报ora-00600:internal error code,arguments:-4007,using direct-insert within a transaction is not supported at anonymous block;

insert/+ append nologing/ into URP3_TUSP.DM_GAAP_PARENT_COURSE_TMP(count_proj_code,sub_code, sub_name,data_source) 会报ora-00600:internal error code,arguments:-4007,using direct-insert within a transaction is not supported at anonymous block;

通过执行计划知:


为什么加hint /+ append nologing/会报这种错误呢,换一个环境没有问题

1 个赞

这个提示 旁路导入不支持在匿名块中执行

好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节。建议你通过以下方式寻求帮助:
1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;
2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。
OceanBase官网商务咨询

https://www.oceanbase.com/contactus?fromPage=https%3A%2F%2Fwww.oceanbase.com%2Fsoftwarecenter-enterprise&dataSources=softwarecenter-enterprise_footercontact_d2022

去掉hint append,是成功的,就不会报这个错误了

这个HINT是开启旁路导入的功能,报错已经提示的很明显了,匿名块不支持旁路导入

但是别的环境可以呢,ob版本都是一样的,原来环境也是可以的,上周突然发现不行了,检查了调整的参数也没看到影响它的地方

看下AUTOCOMMIT变量设置的是什么值,旁路导入不能在事务中,需要把自动提交打开

两套环境都是一样的 ,off

OFF肯定是不行的,旁路导入必须设置为ON

其实也不是旁路,是直接插入不行,如果insert into 的是其他用户下的表加hint append也不报错,只有在当前用户下执行insert into当前库的表加append 才会报错

这个参数没有变过啊,之前也是可以的,上周五发现突然不行了,新环境也都是off,执行也不报这个错

那就对比两个环境的执行计划,你上面的执行计划旁路导入是开启的,所以才会报错

我第一反应也是对比我这个参数,两个都是off的,一个不报错一个报错


执行计划也对比过,确实是一个走direct-mode is enabled in insert into select(报错的) ,一个没有

没有报错的执行计划发下吧

执行计划.txt (9.3 KB)

你好,你这个问题是在oracle mode下发生的吧?建议你直接去联系企业版的客户支持,因为ob社区版是不支持oracle的,所以我们回复的不一定是最佳的答案,企业版的客户支持会给你最佳的答案的

可以看到,两个执行计划一个开启了旁路导入,一个没有,如果想知道两者生成执行计划的差异,可以提企业的工单支持

好的