---
title: OBServer core 在 ObSSTableMultiVersionRowMultiGetter::inner_get_next_row-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OBServer core 在 ObSSTableMultiVersionRowMultiGetter::inner_get_next_row相关的常见问题和使用技巧，帮助您快速解决OBServer core 在 ObSSTableMultiVersionRowMultiGetter::inner_get_next_row的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# OBServer core 在 ObSSTableMultiVersionRowMultiGetter::inner_get_next_row

更新时间：2026-06-04 09:56

适用版本： V2.2.x 内容类型：Troubleshoot  

## 问题现象

指定逆序多主键查询，且存在多版本 SSTable，并且当前的读版本小于转储 SSTable 的 snapshot version 时（某一个只读事务，拿了读版本，过了一段时间再去读数据，中间发生了转储），可能触发 core。

执行计划如下：

```sql
explain select * from t1 as of snapshot 1686831938362055 where c1 in (0,10,20,30,40) order by c1 desc;
+--------------------------------------------------------------------------------------+
| Query Plan                                                                           |
+--------------------------------------------------------------------------------------+
| ================================================                                     |
| |ID|OPERATOR |NAME       |EST.ROWS|EST.TIME(us)|                                     |
| ------------------------------------------------                                     |
| |0 |TABLE GET|t1(Reverse)|5       |12          |                                     |
| ================================================                                     |
| Outputs & filters:                                                                   |
| -------------------------------------                                                |
|   0 - output([t1.c1]), filter(nil), rowset=256                                       |
|       access([t1.c1]), partitions(p0)                                                |
|       is_index_back=false, is_global_index=false,                                    |
|       range_key([t1.c1]), range[0 ; 0], [10 ; 10], [20 ; 20], [30 ; 30], [40 ; 40],  |
|       range_cond([t1.c1 IN (0, 10, 20, 30, 40)])                                     |
+--------------------------------------------------------------------------------------+
12 rows in set (0.05 sec)

```

- 指定 as of snapshot 让读版本小于转储 sstable 的 snapshot version。
 - TABLE GET 表明是主键查询。
 - range 多个表明是多个主键查询。
 - Reverse 表明是逆序。

## 问题原因

ObSSTableMultiVersionRowMultiGetter 没有正确处理多个 range 的 range_idx。

## 问题的风险及影响

导致 OBServer core。

## 影响版本

OceanBase 数据库 V2.2.77 BP17 Hotfix2 之前的所有版本。

## 解决方法及规避方式

- 升级到问题已修复版本，目前已修复的版本包含 OceanBase 数据库 V2.2.77 BP17 Hotfix2 及之后的版本。
 - 本身遇到概率很小，并且读版本小于转储 SSTable 的 snapshot version 可能也是瞬时的状态，只能根据 core 找到对应的SQL，禁掉 SQL。

上一篇

[OBKV 使用带 CURRENT_STRAMP 属性的列作为 TTL 过期列导致节点宕机](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000452197)

下一篇

[回填 Select item 时偏移错误导致 coredump](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000467872) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
