---
title: github-fill
description: 将表添加到表组 创建表组后，可以将符合条件的表加入到表组。 使用限制 OceanBase 数据库升级过程中，禁止使用 ALTER TABLEGROUP 语句向表组中添加表。 注意事项 带有分区权重的表可以被添加到表组中，但添加到表组后，可能会影响表组的整体分布。带分区权重的表加入表组后对原表组的具体影响如下表所示。 …
---
切换语言

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

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

# 将表添加到表组

更新时间：2026-01-20 19:28:18

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/300.database-object-management/200.manage-object-of-oracle-mode/300.manage-table-groups-of-oracle-mode/400.add-tables-to-a-table-group-of-oracle-mode.md)  

创建表组后，可以将符合条件的表加入到表组。

## 使用限制

OceanBase 数据库升级过程中，禁止使用 `ALTER TABLEGROUP` 语句向表组中添加表。

## 注意事项

带有分区权重的表可以被添加到表组中，但添加到表组后，可能会影响表组的整体分布。带分区权重的表加入表组后对原表组的具体影响如下表所示。

| 表组的 SHARDING 属性 | 原来的分区分布方式 | 带分区权重后的影响 |
| --- | --- | --- |
| NONE | 全部聚合 | 无影响 |
| PARTITION | 各表的一级分区内 Value 相同的分区聚合（同一分区组）；一级分区之间打散。 | 少数带权重的分区会影响表组的整体分布。 |
| ADAPTIVE | - 表组内全部是一级分区表时，各表的一级分区内 Value 相同的分区聚合（同一分区组）；一级分区之间打散。 - 表组内全部是二级分区表时，各表的二级分区内 Value 相同的分区聚合（同一分区组）；二级分区之间打散。 | 表组内全部是一级分区表时，少数带权重的分区会影响表组的整体分布。由于目前暂不支持对二级分区表设置分区权重，故表组内全部是二级分区表的场景暂不涉及。 |

## 前提条件

将表加入表组前，需要查看表组属性及表组内表的分区信息，以确认当前表是否满足加入表组的条件。查看表组信息的详细操作请参见 [查看表组信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476639)。

指定所属的表组时，待创建的表需要满足加入该表组的条件。

- 对于 `SHARDING` 属性为 `NONE` 的表组，对待创建的表没有任何限制。表组中可以同时有非分区表、一级分区表和二级分区表。

  #### 说明

  将表添加到 `SHARDING = 'NONE'` 属性的表组中时，如果该表有全局索引，那么系统会自动将全局索引与这个表组进行绑定，以提高性能。有关全局索引的详细信息，参见 [全局索引](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479310)。
 - 对于 `SHARDING` 属性为 `PARTITION` 的表组，要求待创建的表其对应的一级分区必须与表组中所有表的一级分区的分区定义一致，包括分区类型、分区个数、分区值。表组中可以同时有一级分区表和二级分区表。也支持表组中全部是非分区表。

  相同的分区定义具体指：

     - 分区类型相同，例如，都是 Range 分区。
     - 如果是 Hash 分区，要求引用的列数相同，并且分区个数相同。
     - 如果是 Range 分区，要求引用的列数相同，分区数相同，Range 分割点也相同。
 - 对于 `SHARDING` 属性为 `ADAPTIVE`的表组，要求待创建的表其对应的一级分区和二级分区必须与表组中所有表的一级分区和二级分区的分区定义一致，包括分区类型、分区个数、分区值。表组中必须全是一级分区表或全是二级分区表。也支持表组中全部是非分区表。

     - 分区类型相同（例如，都是 Hash + Range 分区）。
     - 如果是 Hash 分区，要求引用的列数相同，并且分区个数相同。
     - 如果是 Range 分区，要求引用的列数相同，分区数相同，Range 分割点也相同。
     - 对于二级分区，根据其分区类型，与一级分区的要求相同。

## 创建表时将表指定给表组

创建表组后，如果表还未创建，可以在创建表时通过指定表组的方式将表指定给表组。语句如下。

```sql
CREATE TABLE table_name column_definition TABLEGROUP = tablegroup_name [partition_option];

```

语句使用说明：

- `column_definition`：定义表的列名及数据类型。
 - `TABLEGROUP`：指定表所属的表组。
 - `partition_option`：定义表的分区信息。

创建表并加表加入表组的示例如下：

- 创建表加入到 `SHARDING` 属性为 `NONE` 的表组。

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

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

       ```
     2. 创建一个非分区表 `tbl1` 并指定加入到表组 `tblgroup1`。

       ```sql
       CREATE TABLE tbl1 (col NUMBER) TABLEGROUP = tblgroup1;

       ```
     3. 创建一个一级分区表 `tbl2` 并指定加入到表组 `tblgroup1`。

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

       ```
     4. 查看表组中的表。

       ```sql
       SELECT * FROM SYS.DBA_OB_TABLEGROUP_TABLES WHERE tablegroup_name = 'TBLGROUP1';

       ```

       结果如下：

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

       ```
 - 创建表加入到 `SHARDING` 属性为 `PARTITION` 的表组。

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

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

       ```
     2. 创建一个一级分区表 `tbl3` 并指定加入到表组 `tblgroup2`。

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

       ```
     3. 创建一个与表 `tbl3` 分区类型、分区个数及分区值均相同的表 `tbl4` 并指定加入到表组 `tblgroup2`。

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

       ```sql
       SELECT * FROM SYS.DBA_OB_TABLEGROUP_TABLES WHERE tablegroup_name = 'TBLGROUP2';

       ```

       结果如下：

       ```shell
       +-----------------+-------+------------+-----------+
       | TABLEGROUP_NAME | OWNER | TABLE_NAME | SHARDING  |
       +-----------------+-------+------------+-----------+
       | TBLGROUP2       | SYS   | TBL3       | PARTITION |
       | TBLGROUP2       | SYS   | TBL4       | PARTITION |
       +-----------------+-------+------------+-----------+
       2 rows in set

       ```
 - 创建表加入到 `SHARDING` 属性为 `ADAPTIVE` 的表组。

     1. 创建一个 `SHARDING` 属性为 `ADAPTIVE` 的表组 `tblgroup3`。

       ```sql
       CREATE TABLEGROUP tblgroup3 SHARDING = 'ADAPTIVE';

       ```
     2. 创建一个模板化二级分区表 `tbl5` 并指定加入到表组 `tblgroup3`。

       ```sql
       CREATE TABLE tbl5(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup3
       PARTITION BY LIST(col1)
       SUBPARTITION BY LIST(col2)
       SUBPARTITION TEMPLATE
       (SUBPARTITION mp0 VALUES('01'),
       SUBPARTITION mp1 VALUES('02'),
       SUBPARTITION mp2 VALUES('03')
       )
       (PARTITION p0 VALUES('01'),
       PARTITION p1 VALUES('02')
       );

       ```
     3. 创建一个与表 `tbl5` 分区类型、分区个数及分区值均相同的表 `tbl6` 并指定加入到表组 `tblgroup3`。

       ```sql
       CREATE TABLE tbl6(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup3
       PARTITION BY LIST(col1)
       SUBPARTITION BY LIST(col2)
       SUBPARTITION TEMPLATE
       (SUBPARTITION mp0 VALUES('01'),
       SUBPARTITION mp1 VALUES('02'),
       SUBPARTITION mp2 VALUES('03')
       )
       (PARTITION p0 VALUES('01'),
       PARTITION p1 VALUES('02')
       );

       ```sql
       SELECT * FROM SYS.DBA_OB_TABLEGROUP_TABLES WHERE tablegroup_name = 'TBLGROUP3';

       ```

       结果如下：

       ```shell
       +-----------------+-------+------------+----------+
       | TABLEGROUP_NAME | OWNER | TABLE_NAME | SHARDING |
       +-----------------+-------+------------+----------+
       | TBLGROUP3       | SYS   | TBL5       | ADAPTIVE |
       | TBLGROUP3       | SYS   | TBL6       | ADAPTIVE |
       +-----------------+-------+------------+----------+
       2 rows in set

       ```

## 向表组中添加已存在的表

创建表组后，如果表已存在，且满足加入表组的条件，则可以通过 `ALTER TABLEGROUP` 语句向表组中添加表。语句如下。

```sql
ALTER TABLEGROUP tablegroup_name ADD [TABLE] table_name [, table_name...];

```

语句使用说明：

- `tablegroup_name`：待添加表的表组。
 - `table_name`：待添加的表。同时添加多个表时，不同表名之间用英文逗号（,）分隔。

  当添加多个表时，允许表名重复。如果待添加的表已经在当前表组中，系统不会报错。

向表组中添加已存在的表的示例如下：

- 将已存在的表添加到 `SHARDING` 属性为 `NONE` 的表组中。

     1. 创建一个 `SHARDING` 属性为 `NONE` 的表组 `tblgroup4`。

       ```sql
       CREATE TABLEGROUP tblgroup4 SHARDING = 'NONE';

       ```
     2. 创建一个非分区表 `tbl7` 和一个模板化分区表 `tbl8`。

       ```sql
       CREATE TABLE tbl7 (col NUMBER);

       ```

       ```sql
       CREATE TABLE tbl8(col1 NUMBER,col2 VARCHAR2(50))
       PARTITION BY LIST(col1)
       SUBPARTITION BY LIST(col2)
       SUBPARTITION TEMPLATE
       (SUBPARTITION mp0 VALUES('01'),
       SUBPARTITION mp1 VALUES('02'),
       SUBPARTITION mp2 VALUES('03')
       )
       (PARTITION p0 VALUES('01'),
       PARTITION p1 VALUES('02')
       );

       ```
     3. 将表 `tbl7` 和 `tbl8` 同时添加到表组 `tblgroup4` 中。

       ```sql
       ALTER TABLEGROUP tblgroup4 ADD tbl7,tbl8;

       ```sql
       SELECT * FROM SYS.DBA_OB_TABLEGROUP_TABLES WHERE tablegroup_name = 'TBLGROUP4';

       ```

       结果如下：

       ```shell
       +-----------------+-------+------------+----------+
       | TABLEGROUP_NAME | OWNER | TABLE_NAME | SHARDING |
       +-----------------+-------+------------+----------+
       | TBLGROUP4       | SYS   | TBL7       | NONE     |
       | TBLGROUP4       | SYS   | TBL8       | NONE     |
       +-----------------+-------+------------+----------+
       2 rows in set

       ```
 - 将已存在的表添加到 `SHARDING` 属性为 `PARTITION` 的表组中。

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

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

       ```
     2. 创建两个分区定义相同的一级分区表 `tbl9` 和 `tbl10`。

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

       ```

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

       ```
     3. 将表 `tbl9` 和 `tbl10` 同时添加到表组 `tblgroup5` 中。

       ```sql
       ALTER TABLEGROUP tblgroup5 ADD tbl9,tbl10;

       ```sql
       SELECT * FROM SYS.DBA_OB_TABLEGROUP_TABLES WHERE tablegroup_name = 'TBLGROUP5';

       ```

       结果如下：

       ```shell
       +-----------------+-------+------------+-----------+
       | TABLEGROUP_NAME | OWNER | TABLE_NAME | SHARDING  |
       +-----------------+-------+------------+-----------+
       | TBLGROUP5       | SYS   | TBL9       | PARTITION |
       | TBLGROUP5       | SYS   | TBL10      | PARTITION |
       +-----------------+-------+------------+-----------+
       2 rows in set

       ```
 - 将已存在的表添加到 `SHARDING` 属性为 `ADAPTIVE` 的表组中。

     1. 创建一个 `SHARDING` 属性为 `ADAPTIVE` 的表组 `tblgroup6`。

       ```sql
       CREATE TABLEGROUP tblgroup6 SHARDING = 'ADAPTIVE';

       ```
     2. 创建两个分区定义相同的模板化二级分区表 `tbl11` 和 `tbl12`。

       ```sql
       CREATE TABLE tbl11(col1 NUMBER,col2 VARCHAR2(50))
       PARTITION BY LIST(col1)
       SUBPARTITION BY LIST(col2)
       SUBPARTITION TEMPLATE
       (SUBPARTITION mp0 VALUES('01'),
       SUBPARTITION mp1 VALUES('02'),
       SUBPARTITION mp2 VALUES('03')
       )
       (PARTITION p0 VALUES('01'),
       PARTITION p1 VALUES('02')
       );

       ```

       ```sql
       CREATE TABLE tbl12(col1 NUMBER,col2 VARCHAR2(50))
       PARTITION BY LIST(col1)
       SUBPARTITION BY LIST(col2)
       SUBPARTITION TEMPLATE
       (SUBPARTITION mp0 VALUES('01'),
       SUBPARTITION mp1 VALUES('02'),
       SUBPARTITION mp2 VALUES('03')
       )
       (PARTITION p0 VALUES('01'),
       PARTITION p1 VALUES('02')
       );

       ```
     3. 将表 `tbl11` 和 `tbl12` 同时添加到表组 `tblgroup6` 中。

       ```sql
       ALTER TABLEGROUP tblgroup6 ADD tbl11,tbl12;

       ```sql
       SELECT * FROM SYS.DBA_OB_TABLEGROUP_TABLES WHERE tablegroup_name = 'TBLGROUP6';

       ```

       结果如下：

       ```shell
       +-----------------+-------+------------+----------+
       | TABLEGROUP_NAME | OWNER | TABLE_NAME | SHARDING |
       +-----------------+-------+------------+----------+
       | TBLGROUP6       | SYS   | TBL11      | ADAPTIVE |
       | TBLGROUP6       | SYS   | TBL12      | ADAPTIVE |
       +-----------------+-------+------------+----------+
       2 rows in set

       ```

## 相关文档

- [关于表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476637)
 - [创建表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476636)
 - [查看表组信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476639)
 - [修改表组的 SHARDING 属性](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476638)
 - [管理表组内的表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476641)
 - [删除表组](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476642)

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