OB主键ID一次性跳变值过大

【 使用环境 】生产环境
【 OB or 其他组件 】4.2.5.1
【 使用版本 】社区版
【问题描述】业务插入600条数据后,发先主键id跳变值过大,感觉不太正常。目前跳变值过大担心超过bigint取值范围
【复现路径】
【附件及日志】表类型为order,auto_increment_cache_size为1000000

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

2 个赞

用户问题简述: “在 OceanBase 4.2.5.1 社区版中,主键 ID 在生产环境中一次性跳变过大,已经超过了 bigint 的取值范围。表类型为 order,当前 auto_increment_cache_size 设置为 1000000。”

由于您遇到的是关于主键 ID 跳变和超出 bigint 范围的问题,这通常涉及到数据库的自动增长机制和表结构设计,但根据提供的 obdiag 功能列表,此问题场景并不直接包含在可采集或分析的场景中。不过,可以使用 observer.base 场景来收集集群的基础信息,这些信息可能有助于分析主键 ID 的异常增长问题。

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

推荐您执行上述日志采集命令,然后将生成的日志文件发送给我们,以便我们进一步分析您的问题。同时,请提供以下额外信息:

  1. 您是否最近进行了大量的插入操作,或是有批量导入数据的操作?
  2. 表结构中定义的主键类型是什么?是 int/bigint 类型吗?
  3. 之前是否有手动调整过 auto_increment_cache_size 参数的设置?
  4. 是否在该表上执行过任何可能导致主键重置或重新分配的操作,例如 truncate 操作?
  5. 系统中是否存在可能导致主键跳跃的触发器或存储过程?

通过上述信息,我们将能够更好地理解问题发生的背景,并提供针对性的解决方案。感谢您的配合!

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞



image

2 个赞

这个应该得找官方了

1 个赞

问题时段是否有过切主,或者修改primary zone操作

1 个赞

这个汲取你是单zone ,没有切主

1 个赞

通过GV$OB_SQL_AUDIT确认一下该insert语句的trace id,然后通过一份相关的observer日志。相关表的建表sql和执行的sql文本都提供一下

1 个赞

是不是手动insert了一个id进去

1 个赞

AUTO_INCREMENT = xxxxxxxxxxxxxx

1 个赞
CREATE TABLE `inv_conf_co_subj_class` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `line_ver_num` bigint(20) DEFAULT NULL COMMENT '行版本号',
  `co_code` varchar(255) DEFAULT NULL COMMENT '公司代码',
  `ledger_subj` varchar(255) DEFAULT NULL COMMENT '总账科目',
  `short_txt` varchar(255) DEFAULT NULL COMMENT '短文本',
  `subj_clas` varchar(255) DEFAULT NULL COMMENT '科目分类',
  `inv_type` varchar(255) DEFAULT NULL COMMENT '存货分类',
  `inv_type_kfd` varchar(255) DEFAULT NULL COMMENT '存货分类(kfd基准)',
  `is_system_makeup` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否系统补差',
  `created_by` bigint(20) DEFAULT NULL COMMENT '创建人',
  `creation_date` datetime DEFAULT NULL COMMENT '创建时间',
  `last_updated_by` bigint(20) DEFAULT NULL COMMENT '修改人',
  `last_update_date` datetime DEFAULT NULL COMMENT '修改时间',
  `object_version_number` bigint(20) NOT NULL DEFAULT '1' COMMENT '行版本号,用来处理锁',
  `ssot_date` timestamp NULL DEFAULT NULL COMMENT '数据更新时间',
  `version` varchar(255) DEFAULT NULL COMMENT '版本',
  `version_num` varchar(255) DEFAULT NULL COMMENT '版本号',
  `last_upd_plp` varchar(100) DEFAULT NULL COMMENT '维护人',
  PRIMARY KEY (`id`)
) AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMMENT = '公司科目分类配置表'


@辞霜

2 个赞

没有

1 个赞

这是目前状态的,不是建表时候

1 个赞

老师,我们发出来了,您看一下,审计视图刷没了

1 个赞

1、没有超过 bigint 的范围。
2、麻烦在用户租户下查一下sql将对应的结果或者附件提供一下。

select * from __all_ddl_operation where table_id=(
select table_id from __all_virtual_table where table_name='inv_conf_co_subj_class');
2 个赞

查询下这个表 __all_rootservice_event_history 插入前是否触发什么任务了

1 个赞

没有


公司限制了,没法上传附件,我 粘贴出来。

gmt_create	gmt_modified	schema_version	tenant_id	user_id	database_id	database_name	tablegroup_id	table_id	table_name	operation_type	ddl_stmt_str	exec_tenant_id
2024-10-16 18:33:20.545764	2024-10-16 18:33:20.545764	1729074800530176	0	0	500002		-1	500505		4	"/* ApplicationName=DBeaver 22.2.0 - SQLEditor <Script.sql> */ Create table if not exists inv_conf_co_subj_class (
	id bigint(20) not null auto_increment comment '主键',
	line_ver_num	bigint	comment '行版本号',
	co_code	varchar(255)	comment '公司代码',
	ledger_subj	varchar(255)	comment '总账科目',
	short_txt	varchar(255)	comment '短文本',
	subj_clas	varchar(255)	comment '科目分类',
	inv_type	varchar(255)	comment '存货分类',
	inv_type_kfd	varchar(255)	comment '存货分类(kfd基准)',
	created_by	bigint	comment '创建人',
	creation_date	datetime	comment '创建时间',
	last_updated_by	bigint	comment '修改人',
	last_update_date	datetime	comment '修改时间',
	object_version_number bigint(20) not null default '1' comment '行版本号,用来处理锁',
	ssot_date	timestamp	comment '数据更新时间',
	version	varchar(255)	comment '版本',
	version_num	varchar(255)	comment '版本号',
	primary key (id)
)
Comment '公司科目分类配置表'"	1068
2024-11-12 19:03:03.652897	2024-11-12 19:03:03.652897	1731409383647680	0	0	500002		-1	500505		5		1068
2024-11-12 19:03:03.676992	2024-11-12 19:03:03.676992	1731409383659600	0	0	500002		-1	500505		3		1068
2024-11-12 19:03:03.685413	2024-11-12 19:03:03.685413	1731409383680560	0	0	500002		-1	500505		3	/* ApplicationName=DBeaver 22.2.0 - Main */ ALTER TABLE repboost.inv_conf_co_subj_class ADD last_upd_plp varchar(100) NULL COMMENT '维护人'	1068
2025-03-05 18:33:18.883455	2025-03-05 18:33:18.883455	1741170798865944	0	0	500002		-1	500505		59	/* ApplicationName=DBeaver 22.2.0 - Main */ TRUNCATE TABLE repboost.inv_conf_co_subj_class	1068
2025-03-05 18:33:18.887675	2025-03-05 18:33:18.887675	1741170798865952	0	0	500002		-1	500505		50		1068
2025-03-05 18:33:24.287135	2025-03-05 18:33:24.287135	1741170804263736	0	0	500002		-1	500505		59	/* ApplicationName=DBeaver 22.2.0 - Main */ TRUNCATE TABLE repboost.inv_conf_co_subj_class	1068
2025-03-05 18:33:24.289244	2025-03-05 18:33:24.289244	1741170804263744	0	0	500002		-1	500505		50		1068
2025-04-10 16:06:33.707557	2025-04-10 16:06:33.707557	1744272393690800	0	0	500993		-1	500997		4	"create table  `inv_conf_co_subj_class` (
	`id` bigint(20) not null auto_increment comment '主键',
	`line_ver_num` bigint(20) comment '行版本号',
	`co_code` varchar(255) comment '公司代码',
	`ledger_subj` varchar(255) comment '总账科目',
	`short_txt` varchar(255) comment '短文本',
	`subj_clas` varchar(255) comment '科目分类',
	`inv_type` varchar(255) comment '存货分类',
	`inv_type_kfd` varchar(255) comment '存货分类(kfd基准)',
	`created_by` bigint(20) comment '创建人',
	`creation_date` datetime comment '创建时间',
	`last_updated_by` bigint(20) comment '修改人',
	`last_update_date` datetime comment '修改时间',
	`object_version_number` bigint(20) not null default '1' comment '行版本号,用来处理锁',
	`ssot_date` timestamp comment '数据更新时间',
	`version` varchar(255) comment '版本',
	`version_num` varchar(255) comment '版本号',
	`last_upd_plp` varchar(100) comment '维护人',
	primary key (`id`)
)
default charset=utf8mb4
default collate=utf8mb4_general_ci
comment='公司科目分类配置表'"	1068
2025-04-11 14:27:28.038359	2025-04-11 14:27:28.038359	1744352848017304	0	0	500002		-1	500505		59	"truncate table 	inv_conf_co_subj_class	;"	1068
2025-04-11 14:27:28.041529	2025-04-11 14:27:28.041529	1744352848017312	0	0	500002		-1	500505		50		1068
2025-05-14 14:35:40.668107	2025-05-14 14:35:40.668107	1747204540656352	0	0	500002		-1	500505		25		1068
2025-05-14 14:40:57.171575	2025-05-14 14:40:57.171575	1747204857152112	0	0	501082		-1	501180		4	"create table `inv_conf_co_subj_class` (
	`id` bigint(20) not null auto_increment comment '主键',
	`line_ver_num` bigint(20) comment '行版本号',
	`co_code` varchar(255) comment '公司代码',
	`ledger_subj` varchar(255) comment '总账科目',
	`short_txt` varchar(255) comment '短文本',
	`subj_clas` varchar(255) comment '科目分类',
	`inv_type` varchar(255) comment '存货分类',
	`inv_type_kfd` varchar(255) comment '存货分类(kfd基准)',
	`created_by` bigint(20) comment '创建人',
	`creation_date` datetime comment '创建时间',
	`last_updated_by` bigint(20) comment '修改人',
	`last_update_date` datetime comment '修改时间',
	`object_version_number` bigint(20) not null default '1' comment '行版本号,用来处理锁',
	`ssot_date` timestamp null comment '数据更新时间',
	`version` varchar(255) comment '版本',
	`version_num` varchar(255) comment '版本号',
	`last_upd_plp` varchar(100) comment '维护人',
	primary key (`id`)
)
default charset=utf8mb4
default collate=utf8mb4_general_ci
comment='公司科目分类配置表'"	1068
2025-06-09 13:53:20.433538	2025-06-09 13:53:20.433538	1749448400418328	0	0	501082		-1	501180		8		1068
2025-06-09 13:53:20.440808	2025-06-09 13:53:20.440808	1749448400436896	0	0	501082		-1	501180		5		1068
2025-06-09 13:53:20.494665	2025-06-09 13:53:20.494665	1749448400460968	0	0	501082		-1	501180		3		1068
2025-06-09 13:53:20.508374	2025-06-09 13:53:20.508374	1749448400502024	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 22.2.0 - SQLEditor <Script-7.sql> */ ALTER TABLE inv_conf_co_subj_class ADD COLUMN is_system_makeup tinyint default 0 NOT NULL COMMENT '是否系统补差' AFTER inv_type_kfd	1068
2025-07-18 15:43:01.348695	2025-07-18 15:43:01.348695	1752824581248408	0	0	501082		-1	501180		3		1068
2025-07-18 15:43:01.421368	2025-07-18 15:43:01.421368	1752824581410224	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 15:48:16.836582	2025-07-18 15:48:16.836582	1752824896833680	0	0	501082		-1	501180		3		1068
2025-07-18 15:48:16.873458	2025-07-18 15:48:16.873458	1752824896870048	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 15:49:02.09013	2025-07-18 15:49:02.09013	1752824942088656	0	0	501082		-1	501180		3		1068
2025-07-18 15:49:02.126951	2025-07-18 15:49:02.126951	1752824942122424	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 16:02:40.865872	2025-07-18 16:02:40.865872	1752825760864152	0	0	501082		-1	501180		3		1068
2025-07-18 16:02:40.897379	2025-07-18 16:02:40.897379	1752825760894520	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 16:02:51.542605	2025-07-18 16:02:51.542605	1752825771539288	0	0	501082		-1	501180		3		1068
2025-07-18 16:02:51.575224	2025-07-18 16:02:51.575224	1752825771569736	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 16:03:09.376999	2025-07-18 16:03:09.376999	1752825789373640	0	0	501082		-1	501180		3		1068
2025-07-18 16:03:09.420217	2025-07-18 16:03:09.420217	1752825789417016	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 16:04:02.30839	2025-07-18 16:04:02.30839	1752825842304816	0	0	501082		-1	501180		3		1068
2025-07-18 16:04:02.338924	2025-07-18 16:04:02.338924	1752825842337344	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59469	1068
2025-07-18 16:04:19.725802	2025-07-18 16:04:19.725802	1752825859720144	0	0	501082		-1	501180		3		1068
2025-07-18 16:04:19.764655	2025-07-18 16:04:19.764655	1752825859761848	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59470	1068
2025-07-18 16:05:03.764017	2025-07-18 16:05:03.764017	1752825903761680	0	0	501082		-1	501180		3		1068
2025-07-18 16:05:03.810524	2025-07-18 16:05:03.810524	1752825903806360	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:16:54.698815	2025-07-18 16:16:54.698815	1752826614694152	0	0	501082		-1	501180		3		1068
2025-07-18 16:16:54.736731	2025-07-18 16:16:54.736731	1752826614734368	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:17:27.261164	2025-07-18 16:17:27.261164	1752826647260176	0	0	501082		-1	501180		3		1068
2025-07-18 16:17:27.297953	2025-07-18 16:17:27.297953	1752826647294072	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:19:10.618024	2025-07-18 16:19:10.618024	1752826750614504	0	0	501082		-1	501180		3		1068
2025-07-18 16:19:10.653865	2025-07-18 16:19:10.653865	1752826750649456	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:24:48.573294	2025-07-18 16:24:48.573294	1752827088569072	0	0	501082		-1	501180		3		1068
2025-07-18 16:24:48.611134	2025-07-18 16:24:48.611134	1752827088607368	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:30:40.747832	2025-07-18 16:30:40.747832	1752827440743296	0	0	501082		-1	501180		3		1068
2025-07-18 16:30:40.783607	2025-07-18 16:30:40.783607	1752827440781536	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:35:14.34025	2025-07-18 16:35:14.34025	1752827714339272	0	0	501082		-1	501180		3		1068
2025-07-18 16:35:14.377108	2025-07-18 16:35:14.377108	1752827714374776	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:45:08.952899	2025-07-18 16:45:08.952899	1752828308950304	0	0	501082		-1	501180		3		1068
2025-07-18 16:45:09.00654	2025-07-18 16:45:09.00654	1752828308998704	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068
2025-07-18 16:48:04.523585	2025-07-18 16:48:04.523585	1752828484520768	0	0	501082		-1	501180		3		1068
2025-07-18 16:48:04.562579	2025-07-18 16:48:04.562579	1752828484558384	0	0	501082		-1	501180		3	/* ApplicationName=DBeaver 7.0.4 - SQLEditor <Script-13.sql> */ ALTER TABLE inv_conf_co_subj_class AUTO_INCREMENT = 59500	1068

1 个赞

再这样确认一下

select gmt_create,ddl_stmt_str from __all_ddl_operation 
where table_id=(
select table_id from __all_virtual_table where table_name='inv_conf_co_subj_class')
and ddl_stmt_str like '%auto_increment%'
order by gmt_create desc limit 10;

select * from dba_ob_servers order by zone;