update语句报No memory or reach tenant memory limit

INSERT INTO tab_zaj_threeperson_zcsb (cclzrq, changetime, czjbr, czjbrdm, czjbrdwdm, encryCertid, encryKey, fzrq, hgzsbh, hzclWjName, hzclWjPath, jszc, kslb, ksqymc, ksqyxydm, kssj, OldZjh, oldhgzsbh, oldzsqyid, oldzsqymc, oldzsyxjzrq, oldzsyxksrq, qysignsj, reqid, ryid, rylb, sblx, sbqyid, sbqymc, sbsj, sffddbr, whcd, xb, xm, zjh, zjlx, zsyxjzrq, zsyxksrq)

VALUES (NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

NULL ,

‘123’ ,

‘1’ ,

‘1’ ,

‘1’ ,

NULL ,

NULL ,

‘2025-05-04T11:48:35.5874845+08:00’ ,

NULL ,

NULL ,

‘1’ ,

‘123455’ ,

‘123455’ ,

‘1’ ,

NULL ,

NULL );

这么简单一句SQL 报了
失败原因:

ErrorCode = 4013, SQLState = HY001, Details = No memory or reach tenant memory limit

并没有并发数,只是在测试中。租户6个节点2+2+2每节点4核8G 也不小了。
难道是这种写法的问题吗?

找下SQL执行时候的trace_id,过滤一下observer的日志,看下那个模块的内存爆了

一个插入语句,不应该啊。是不是在同时有其他自动任务

用诊断工具obdiag 分析一下报错前10分钟–报错时间点的内存看看,会生成一分内存分析图,可以很明确的看出来哪块内存用的多。文档:https://www.oceanbase.com/docs/common-obdiag-cn-1000000002821498

ob的版本号
a. 登录系统租户,打开enable_rich_error_msg 参数
alter system set enable_rich_error_msg=true;
b. 登录业务租户,执行报错 SQL 语句,会直接返回执行节点 IP 和 trace_id 信息。
obclient [test]> select count() from t2;
ERROR 1146 (42S02): Table ‘test.t2’ doesn’t exist
[xx.xx.xx.1:2882] [2024-04-13 20:10:20.292087] [YB420BA1CC68-000615A0A8EA5E38-0-0]
c. 去 xx.xx.xx.1 节点过滤日志,如果最新日志无法过滤到,可以正则匹配多个日志进行过滤
obclient [test]> select count(
) from t2;
ERROR 1146 (42S02): Table ‘test.t2’ doesn’t exist
[xx.xx.xx.1:2882] [2024-04-13 20:10:20.292087] [YB420BA1CC68-000615A0A8EA5E38-0-0]
d. 获取完日志信息后,关闭enable_rich_error_msg参数
alter system set enable_rich_error_msg=false;

你这边数据库是哪个版本呢