问题现象
数据库执行 DML 时报错。
Worker 003: ERROR: (conn=396108) ORA-00600: internal error code, arguments: -6244, out of transaction threshold
Worker 002: ERROR: (conn=273946) ORA-00600: internal error code, arguments: -6244, out of transaction threshold
问题原因
单笔提交的事务大小超过了 OceanBase 数据库的最大事务大小限制。
适用版本
OceanBase 数据库 V2.x 各个版本。
解决方法
如果在执行一个操作数据量很大的 SQL 语句时报错。
ORA-00600: ORA-00600: internal error code, arguments: -6244, out of transaction threshold
此时就需要去修改 _max_trx_size 隐藏参数。
obclient > select * from oceanbase.__all_virtual_sys_parameter_stat where name='_max_trx_size';
obclient> ALTER SYSTEM SET _max_trx_size='1G';
说明
隐藏参数 _max_trx_size 表示每个数据库事务中涉及的每个分区使用的 MemStore 内存的限制, 默认值为 100M。