【 使用环境 】测试环境
【 OB or 其他组件 】Ob
【 使用版本 】4.4.2.0
【问题描述】在验证官方.net驱动在C#服务中对接oracle租户的ob数据库操作。
验证了两种批量插入数据的方式。
1、发现对于批量插入数据场景下,使用单事务下预编译sql语句,然后循环一条条执行数据插入的方式是可行的。
2、但是,像插入Oracle数据库那样使用批量变量绑定的方式执行(连接串已加上:UseArrayBinding=true;UseOraclePrepareExecute=true),会报下面的错误。
所以这是因为OceanBase目前不支持在.net服务中这种方式(第二种)执行批量数据插入吗?
报错信息:
OceanBase.MySqlException(0x80004005):OBE-00600:internal error code, arguments: -4016, Internal error
at OceanBase.core.ServerSession.ReceiveReplyAsync…
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
论坛小助手
#3
从您的描述来看,您遇到了一个内部错误(OBE-00600),这通常意味着在执行过程中碰到了OceanBase未预期的情况或限制。根据文档和您提供的信息,似乎没有直接适用于此错误的根因分析场景,但我们可以先收集一些基本信息来更好地理解问题。
建议步骤:
日志采集场景: SQL 执行出错
日志采集命令:
obdiag gather scene run --scene=observer.sql_err --env "{db_connect='-h<OB_IP> -P2881 -u<用户名>@<租户名> -p<密码> -D<数据库名>', trace_id='<您的trace_id>'}"
请将 <OB_IP>、<用户名>、<租户名>、<密码> 和 <数据库名> 替换为您实际的连接信息,并且尝试获取执行该批量插入操作时所触发的 trace_id 值以帮助定位具体的事务。如果难以获取到确切的 trace_id,则可以略过这一项。
上述命令将会收集与SQL执行相关的错误日志和其他有用信息,这对于诊断当前遇到的问题至关重要。
为了更进一步地了解这个问题,请回答以下几个问题:
- 您能否分享出现该错误的具体SQL语句或提供一段可重现此问题的示例代码?
- 这种情况下,每次运行都会失败还是间歇性发生?如果是后者,大约发生的频率是怎样的?
- 在不使用批量变量绑定的情况下单独执行相同的INSERT语句是否能够成功?
- 之前是否有对OceanBase集群进行过任何配置更改或升级等操作?
- 除了这里提到的症状外,系统还有其他异常表现吗,例如性能下降或其他类型的错误?
希望这些信息可以帮助我们找到解决办法。收集完日志后,请将其打包并通过适当渠道发送给我们以便于后续调查。感谢您的配合!
附上敏捷诊断工具 obdiag 使用帮助链接