---
title: OceanBase 数据库 Oracle 模式中序列介绍-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库 Oracle 模式中序列介绍相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库 Oracle 模式中序列介绍的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

划线反馈

# OceanBase 数据库 Oracle 模式中序列介绍

更新时间：2026-08-13 07:41

适用版本： V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

本文主要介绍 OceanBase 数据库 Oracle 模式中序列的使用方法。

## 适用版本

OceanBase 数据库 V2.x、V3.x、V4.x 版本

## 与 Oracle 数据库序列的差异

OceanBase 数据库与 Oracle 数据库序列的差异如下表所示。

| 模式 | Oracle 数据库 | OceanBase 数据库 |
| --- | --- | --- |
| **NOCACHE wi****th ORDER** | 所有 instance 不缓存任何序列，使用时从全局 CACHE 中获取，CACHE 根据请求的先后顺序返回序列值。 | 所有 instance 不缓存任何序列，使用时从全局 CACHE 中获取，CACHE 根据请求的先后顺序返回序列值。 |
| **NOCACHE with NOORDER** | 所有 instance 不缓存任何序列，使用时从全局 CACHE 中获取，CACHE 可以根据 busy 程度延迟满足一些请求，导致 NOORDER。 | 仅语法兼容，实际效果与 NOCACHE with ORDER 相同。 |
| **CACHE with ORDER** | 每个 instance 都缓存相同的序列，使用之前需要通过全局锁来同步序列中的下一个可用位置。 | 仅语法兼容，实际效果因版本而异，详见下方说明。 |
| **CACHE with NOORDER** | 每个 instance 都缓存不同的序列，并且不需要全局同步 CACHE 状态。此时的值自然是 NOORDER。 | 每个 instance 都缓存不同的序列，并且不需要全局同步 CACHE 状态。此时的值自然是 NOORDER。 |

#### 说明

- 在 OceanBase 数据库 V4.2.2 及以下版本中 `CACHE with ORDER` 本质上就是 NOCACHE，每次获取序列值都会读写内部表。
 - 在 OceanBase 数据库 V4.2.3 及以上版本中 `CACHE with ORDER` 模式仅有一个 instance 缓存序列，使用时从该唯一 CACHE 中获取，CACHE 根据请求的先后顺序返回序列值。

出于性能考虑，OceanBase 数据库建议您使用默认的 **CACHE with NOORDER** 方式。

#### 注意

OceanBase 数据库中，不建议使用 **ORDER with NO CACHE** ，这种模式下每次调用 `NEXTVAL` 都会触发一次内部表 `SELECT` 与 `UPDATE`，会影响数据库的性能。

在创建序列时，由于默认的 CACHE 值过小，需要手动声明。对于单机 TPS 为 100 时，CACHE SIZE 建议设置为 360000。

## Oracle 模式中序列的基本语法

- 序列的增、删、改操作

     - 创建序列

      ```unknow
      obclient> CREATE SEQUENCE sequence_name
        START WITH value
         INCREMENT BY value
         MINVALUE value
         MAXVALUE value
         CYCLE
         NOORDER
         CACHE 100000000;

      ```
     - 修改序列

      ```unknow
      obclient> ALTER SEQUENCE sequence_name INCREMENT BY value;

      ```
     - 删除序列

      ```unknow
      obclient> DROP SEQUENCE sequence_name;

      ```
 - 使用序列

     - 使用查询语句

      ```unknow
      obclient> SELECT sequence_name.nextval FROM table_name;

      ```
     - 使用插入语句

      ```unknow
      obclient> INSERT INTO table_name VALUES (sequence_name.nextval);

      ```
     - 使用修改语句

      ```unknow
      obclient> UPDATE table_name SET c1 = sequence_name.nextval;

      ```

有关序列的更多操作方法，请参见《OceanBase 数据库 SQL 参考（Oracle 模式）》。

## 使用限制

- 序列只可用于顶层 SELECT ITEM、INSERT 值与 UPDATE 赋值。
 - 序列不可用于子查询、Filter、group by 等语句。

  例如在 OceanBase 数据库中执行以下查询都会产生错误。

  ```unknow
  obclient> SELECT * FROM t1 WHERE t1.pk IN (SELECT s1.nextval FROM dual);
  ERROR-02287: sequence number not allowed here

  obclient> SELECT * FROM t1 WHERE t1.pk IN (SELECT s1.nextval FROM t1);
  ERROR-02287: sequence number not allowed here

  obclient> SELECT * FROM t1 WHERE i = s1.nextval;
  ERROR-02287: sequence number not allowed here

  obclient> SELECT * FROM t_part GROUP BY s1.nextval;
  ERROR-02287: sequence number not allowed here

  obclient> SELECT * FROM t_part ORDER BY s1.nextval;
  ERROR-02287: sequence number not allowed here

  obclient> SELECT avg(s1.nextval) FROM dual;
  ERROR-02287: sequence number not allowed here

  obclient> SELECT avg(s1.nextval) FROM t1;
  ERROR-02287: sequence number not allowed here

  obclient> SELECT distinct s1.nextval FROM t1;
  ERROR-02287: sequence number not allowed here

  ```

## 常见问题

**Q：** OceanBase 数据库 Oracle 租户中，序列能够保证连续递增吗？

**A：**

- 单机内保证递增，多机之间不保证递增。
 - 单机和多机都不保证连续。

  如果发生了宕机或执行了回滚，则值可能出现跳跃。因此如果您需要严格等差递增序列时，不建议您使用数据库中的序列。

**Q：** OceanBase 数据库的创建 sequence 时使用 noorder 选项，是否保证单调递增且唯一？

**A：** 不保证单调递增，但是保证唯一。

上一篇

[CDB_OB_TABLE_SPACE_USAGE 查询的 OCCUPY_SIZE 比 REQUIRED_SIZE 大](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003269522)

下一篇

[OceanBase 数据库 MySQL 租户不支持序列](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207741) ![有帮助](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) 咨询热线
