---
title: "修改表组属性 - OceanBase 数据库 V4.4.2 | OceanBase 文档中心"
description: 修改表组属性 创建表组后，根据业务调整，可以修改表组属性。 使用限制 OceanBase 数据库升级过程中，禁止修改表组属性。 执行该语句需要确保当前用户拥有全局 ALTER 权限。 修改规则 修改表组的 SHARDING 属性时，需要先查看表组内是否存在表，以及表组内表的分区信息，查看表组内的表的具体操作请参见 查…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.4.2 LTS

# 修改表组属性

更新时间：2026-07-16 19:52:04

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.4.2/zh-CN/700.reference/300.database-object-management/200.manage-object-of-oracle-mode/300.manage-table-groups-of-oracle-mode/500.modify-the-sharding-attribute-ot-a-table-group-of-oracle-mode.md)  

创建表组后，根据业务调整，可以修改表组属性。

## 使用限制

- OceanBase 数据库升级过程中，禁止修改表组属性。
 - 执行该语句需要确保当前用户拥有全局 `ALTER` 权限。

## 修改规则

修改表组的 `SHARDING` 属性时，需要先查看表组内是否存在表，以及表组内表的分区信息，查看表组内的表的具体操作请参见 [查看表组信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283505)。

- 如果表组内没有表，则可以任意修改表组的 `SHARDING` 属性。
 - 如果表组内已有表，则需要遵循以下修改规则：

     - 将表组的 `SHARDING` 属性修改为 `NONE` 时，不需要考虑表组内表的分区定义，可以直接修改。
     - 将表组的 `SHARDING` 属性修改为 `PARTITION` 时：

           - 如果表组内的所有表都是非分区表，则可以直接修改。
           - 如果表组内同时有非分区表和分区表，则无法修改。
           - 如果表组内仅有一级分区表或二级分区表，则要求表组内所有表的一级分区对应的分区类型、分区个数及分区值均相同，否则无法修改。
     - 将表组的 `SHARDING` 属性修改为 `ADAPTIVE` 时：

           - 如果表组内的所有表都是非分区表，则可以直接修改。
           - 如果表组内同时有非分区表和分区表，则无法修改。
           - 如果表组内同时有一级分区表和二级分区表，则无法修改。
           - 如果表组内全部是一级分区表，则要求所有一级分区表对应分区类型、分区个数、分区值均相同。
           - 如果表组内全是二级分区表，则要求所有一级分区表和二级分区表对应分区类型、分区个数、分区值均相同。
 - V4.4.2 BP1 及之后版本修改表组属性时，还需满足 `SHARDING` 和 `SCOPE` 以下组合：

  #### 说明

  对于 V4.4.2 版本，从 V4.4.2 BP1 版本开始支持表组的 `SCOPE` 属性。

     - `SHARDING = 'NONE'` + `SCOPE = 'SERVER'`
     - `SHARDING = 'NONE'` + `SCOPE = 'ZONE'`
     - `SHARDING = 'NONE'` + `SCOPE = 'CLUSTER'`
     - `SHARDING = 'PARTITION'` + `SCOPE = 'CLUSTER'`
     - `SHARDING = 'ADAPTIVE'` + `SCOPE = 'CLUSTER'`

## 语法

修改表组属性的 SQL 语句如下：

```sql
ALTER TABLEGROUP tablegroup_name
    [sharding_option,]
    [scope_option];

table_name_list:
    table_name [, table_name ...]

sharding_option:
    SHARDING = '{NONE | PARTITION | ADAPTIVE}'

scope_option:
    SCOPE = '{SERVER | ZONE | CLUSTER}'

```

**参数说明：**

- `tablegroup_name`：待修改的表组名。
 - `sharding_option`：用于修改表组 `SHARDING` 属性，`SHARDING` 决定了表组内各表之间对应分区的聚合方式，聚合的一组分区称为 Partition Group（分区组），是分布打散的最小单位。取值如下：

     - `NONE`：表示对加入表组内各表的分区方式无限制，且表之间分区不作聚合。在 V4.4.2 BP1 之前版本中，`NONE` 语义还包含所有分区都在同一日志流上不作打散，新版本去除该语义，具体是否打散还取决于 `SCOPE` 属性。

           - 对于一级分区表: 每个一级分区作为一个独立的 Partition Group。
           - 对于二级分区表: 每个二级分区作为一个独立的 Partition Group。
           - 对于非分区表: 整个表作为一个 Partition Group。
           - 全局索引：非分区表视作一个分区，每个分区作为一个 Partition Group。
     - `PARTITION`：整个表组是一个 Balance Group，同一一级分区索引的分区聚合在同一 Partition Group。要求加入表组的所有表其对应的一级分区必须与表组中所有表的一级分区的分区定义一致，包括分区类型、分区个数、分区值。相同的分区定义具体指：

           - 分区类型相同，例如，都是 Range 分区。
           - 如果是 Hash 分区，要求引用的列数相同，并且分区个数相同。
           - 如果是 Range 分区，要求引用的列数相同，分区数相同，Range 分割点也相同。
     - `ADAPTIVE`：默认值，要求加入表组的所有表其对应的一级分区和二级分区必须与表组中所有表的一级分区和二级分区的分区定义一致，包括分区类型、分区个数、分区值。

           - 全部是一级分区表：整个表组是一个 Balance Group，同一一级分区索引的分区聚合在同一 Partition Group；
           - 全部是二级分区表：同一一级分区索引的为一个均衡组，均衡组下同一二级分区索引的二级分区聚合在同一 Partition Group。

      相同的分区定义具体指：

           - 分区类型相同，例如，都是 Hash + Range 分区。
           - 如果是 Hash 分区，要求引用的列数相同，并且分区个数相同。
           - 如果是 Range 分区，要求引用的列数相同，分区数相同，Range 分割点也相同。
           - 对于二级分区，根据其分区类型，与一级分区的要求相同。
 - `scope_option`：可选项，用于指定表组的 `SCOPE` 属性。`SCOPE` 决定了表组内所有聚合后的 Partition Group 的分布范围。取值如下：

     - `SERVER`：表示所有 Partition Group 的 Leader 聚集在同一节点上。
     - `ZONE`：表示所有 Partition Group 的 Leader 分布在同一 Zone 内，且打散在 Zone 内各节点。
     - `CLUSTER`：表示所有 Partition Group 的 Leader 打散在集群内各节点。  

## 示例

### 示例一：修改 SHARDING = 'PARTITION' 表组属性

#### 注意

本示例适用于 V4.4.2 BP1 之前版本。

1. 创建一个 `SHARDING` 属性为 `PARTITION` 的表组 `tblgroup1`。

   ```sql
   CREATE TABLEGROUP tblgroup1 SHARDING = 'PARTITION';

   ```
 2. 创建两个分区定义相同的一级分区表 `tbl1` 和 `tbl2`，并加入到表组 `tblgroup1`。

   ```sql
   CREATE TABLE tbl1(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1
   PARTITION BY LIST(col1)
   (PARTITION p0 VALUES('01'),
   PARTITION p1 VALUES('02')
   );

   ```

   ```sql
   CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1
   PARTITION BY LIST(col1)
   (PARTITION p0 VALUES('01'),
   PARTITION p1 VALUES('02')
   );

   ```
 3. 将表组 `tblgroup1` 的 `SHARDING` 属性修改为 `ADAPTIVE`。

   ```sql
   ALTER TABLEGROUP tblgroup1 SHARDING = 'ADAPTIVE';

   ```
 4. 查看表组属性。

   ```sql
   SHOW TABLEGROUPS WHERE tablegroup_name = 'TBLGROUP1';

   ```

   结果如下：

   ```shell
   +-----------------+------------+---------------+----------+
   | TABLEGROUP_NAME | TABLE_NAME | DATABASE_NAME | SHARDING |
   +-----------------+------------+---------------+----------+
   | TBLGROUP1       | TBL1       | SYS           | ADAPTIVE |
   | TBLGROUP1       | TBL2       | SYS           | ADAPTIVE |
   +-----------------+------------+---------------+----------+
   2 rows in set

   ```

   表组内的表 `TBL1` 和 `TBL2` 全部是一级分区表，且分区类型、分区个数、分区值均相同，符合修改规则，`SHARDING` 属性修改成功。

### 示例二：修改 SHARDING = 'NONE' + SCOPE = 'ZONE' 表组属性

1. 创建 `SHARDING = 'NONE' + SCOPE = 'ZONE'` 的表组 `tblgroup2`。

   ```shell
   obclient> CREATE TABLEGROUP tblgroup2
       SHARDING = 'NONE',
       SCOPE = 'ZONE';

   ```
 2. 创建表非分区表 `test_tbl3`，并加入到表组 `tblgroup2`。

   ```shell
   obclient> CREATE TABLE test_tbl3 (col1 NUMBER PRIMARY KEY, col2 VARCHAR2(50))
       TABLEGROUP = tblgroup2;

   ```
 3. 创建一级分区表 `test_tbl4`，并加入到表组 `tblgroup2`。

   ```shell
   obclient> CREATE TABLE test_tbl4 (col1 NUMBER PRIMARY KEY, col2 VARCHAR2(50))
       TABLEGROUP = tblgroup2
       PARTITION BY LIST(col1)
       (PARTITION p0 VALUES('01'),
        PARTITION p1 VALUES('02')
        );

   ```
 4. 将表组 `tblgroup2` 的属性修改为 `SHARDING = 'NONE'` + `SCOPE = 'SERVER'`。

   ```shell
   obclient> ALTER TABLEGROUP tblgroup2 SCOPE = 'SERVER';

   ```
 5. 查看表组属性。

   ```shell
   obclient> SHOW TABLEGROUPS WHERE tablegroup_name = 'TBLGROUP2';

   ```

   结果如下：

   ```shell
   +-----------------+------------+---------------+----------+--------+
   | TABLEGROUP_NAME | TABLE_NAME | DATABASE_NAME | SHARDING | SCOPE  |
   +-----------------+------------+---------------+----------+--------+
   | TBLGROUP2       | TEST_TBL3  | TEST_USER001  | NONE     | SERVER |
   | TBLGROUP2       | TEST_TBL4  | TEST_USER001  | NONE     | SERVER |
   +-----------------+------------+---------------+----------+--------+
   2 rows in set

   ```

## 相关文档

- [关于表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283503)
 - [创建表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283502)
 - [查看表组信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283505)
 - [将表添加到表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283506)
 - [管理表组内的表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283507)
 - [删除表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283508)

 上一篇 下一篇 ![有帮助](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) 咨询热线
