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

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

划线反馈

# CONSISTENCY_LEVEL 字段为-1

更新时间：2026-05-25 09:11

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

在 gv$sql_audit 中查询发现存在 CONSISTENCY_LEVEL 字段为 -1 的情况，本文介绍出现该情况的原因以及处理方法。

## 影响版本

OceanBase 数据库 V2.X 版本。

## 问题现象

在 `gv$sql_audit` 中查询发现查询 `SEELCT * FROM __all_table WHERE not_exist_column=1` 的 `CONSISTENCY_LEVEL` 字段为 -1。

查询语句如下：

```unknow
obclient> SELECT query_sql, ret_code, consistency_level FROM gv$sql_audit WHERE query_sql LIKE '%not_exist_column%'\G

```

错误信息如下：

```unknow
*************************** 1. row ***************************
 query_sql: select * from __all_table where not_exist_column=1

 ret_code: -5217

 consistency_level: -1

```

#### 说明

该行记录的 `ret_code` 为该 SQL 返回的值，如果该查询执行失败，则 `ret_code` 会记录错误码。

## 背景信息

OceanBase 数据库提供了两种一致性级别：STRONG 和 WEAK。一致性级别会影响路由策略的选择。

`CONSISTENCY_LEVEL` 的取值含义如下表所示：

| 字段值 | 一致性级别 | 说明 |
| --- | --- | --- |
| -1 | INVALID | 不可用 |
| 1 | FROZEN | 冻结 |
| 2 | WEAK | 弱一致性级别 |
| 3 | STRONG | 强一致性级别 |

- INVALID：表示该 SQL 不具有一致性级别或执行错误。
 - STRONG：读取最新数据（Read After Write），要求一致性快照，路由策略优先路由到 Leader 副本。
 - WEAK：不要求读取最新数据，读取结果不要求快照，路由策略优先路由到 Follower 副本。
 - FROZEN：只有副本处于转储或合并时会设置为该级别，但考虑到手动合并的场景，因此可以手动配置 `ob_read_consistency` 变量为 FROZEN。此时，`ob_read_consistency` 变量的设置无效，路由策略优先路由到未冻结的副本

  有关 `ob_read_consistency` 变量的更多信息，请参见《OceanBase 数据库 参考指南》中的 **系统变量** 章节。

## 问题原因

导致一致性级别为 INVALID 主要有两种可能原因。

- 会话级变量的 `SET` 命令会出现 `CONSISTENCY_LEVEL=-1` 的情况。例如：

  ```unknow
  obclient> SET SESSION autocommit = 1;
  Query OK, 0 rows affected (0.00 sec)

  obclient> SELECT SVR_IP,QUERY_SQL,CONSISTENCY_LEVEL FROM gv$sql_audit WHERE QUERY_SQL LIKE '%autocommit%';
  +----------------+-------------------------------+-------------------+
  | SVR_IP         | QUERY_SQL                     | CONSISTENCY_LEVEL |
  +----------------+-------------------------------+-------------------+
  | xxx.xx.xxx.xxx | SET SESSION autocommit = true |                -1 |
  +----------------+-------------------------------+-------------------+
  2 rows in set (0.01 sec)

  ```
 - 执行的 SQL 因为各种原因失败也将导致 `CONSISTENCY_LEVEL= -1`。例如：

  ```unknow
  obclient> SELECT * FROM foobar;
  ERROR 1146 (42S02): Table 'test.foobar' doesn't exist
  obclient> SELECT SVR_IP,QUERY_SQL,CONSISTENCY_LEVEL FROM gv$sql_audit WHERE QUERY_SQL LIKE '%foobar%';
  +-----------------+----------------------+-------------------+
  | SVR_IP          | QUERY_SQL            | CONSISTENCY_LEVEL |
  +-----------------+----------------------+-------------------+
  | xxx.xxx.xxx.xxx | SELECT * FROM foobar |                -1 |
  +-----------------+----------------------+-------------------+
  1 row in set (0.00 sec)

  ```

## 解决方式

- 会话级变量设置命令的 `CONSISTENCY_LEVEL=-1` 不会影响 OceanBase 数据库的使用。
 - 如果是 SQL 语法错误，请参见《 OceanBase 数据库 SQL 参考（MySQL 模式）》或 《 OceanBase 数据库 SQL 参考（Oracle 模式）》 手册检查您的 SQL 语句。

上一篇

[OceanBase 数据库 V3.x 如何查询视图的列](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000340645)

下一篇

[分区维护后，DBA_TAB_SUBPARTITIONS 内容没有更新](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000045549) ![有帮助](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) 咨询热线
