首批通过分布式安全可靠测评,为关键业务系统打造
修改表组的 SHARDING 属性
更新时间:2026-03-28 09:45:27
创建表组后,根据业务调整,可以修改表组的 SHARDING 属性。
使用限制
OceanBase 数据库升级过程中,禁止使用 ALTER TABLEGROUP 语句修改表组的 SHARDING 属性。
修改规则
修改表组的 SHARDING 属性时,需要先查看表组内是否存在表,以及表组内表的分区信息,查看表组内的表的具体操作请参见 查看表组信息。
根据查询结果,如果表组内没有表,则可以任意修改表组的 SHARDING 属性。如果表组内已有表,则需要遵循以下修改规则:
将表组的
SHARDING属性修改为NONE时,不需要考虑表组内表的分区定义,可以直接修改。将表组的
SHARDING属性修改为PARTITION时:如果表组内的所有表都是非分区表,则可以直接修改。
如果表组内同时有非分区表和分区表,则无法修改。
如果表组内仅有一级分区表或二级分区表,则要求表组内所有表的一级分区对应的分区类型、分区个数及分区值均相同,否则无法修改。
将表组的
SHARDING属性修改为ADAPTIVE时:如果表组内的所有表都是非分区表,则可以直接修改。
如果表组内同时有非分区表和分区表,则无法修改。
如果表组内同时有一级分区表和二级分区表,则无法修改。
如果表组内全部是一级分区表,则要求所有一级分区表对应分区类型、分区个数、分区值均相同。
如果表组内全是二级分区表,则要求所有一级分区表和二级分区表对应分区类型、分区个数、分区值均相同。
修改表组属性
修改表组 SHARDING 属性的 SQL 语句如下:
ALTER TABLEGROUP tablegroup_name tablegroup_option;
tablegroup_option:
SHARDING = 'NONE'
SHARDING = 'PARTITION'
SHARDING = 'ADAPTIVE'
语句使用说明:
tablegroup_name:待修改的表组名。SHARDING:表组属性。修改表组属性时,需要遵循修改规则。
修改表组属性的示例如下:
创建一个
SHARDING属性为PARTITION的表组tblgroup1。CREATE TABLEGROUP tblgroup1 SHARDING = 'PARTITION';创建两个分区定义相同的一级分区表
tbl1和tbl2,并加入到表组tblgroup1。CREATE TABLE tbl1(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 PARTITION BY LIST(col1) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') );CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 PARTITION BY LIST(col1) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') );将表组
tblgroup1的SHARDING属性修改为ADAPTIVE。ALTER TABLEGROUP tblgroup1 SHARDING = 'ADAPTIVE';查看表组属性。
SHOW TABLEGROUPS WHERE tablegroup_name = 'TBLGROUP1';结果如下:
+-----------------+------------+---------------+----------+ | TABLEGROUP_NAME | TABLE_NAME | DATABASE_NAME | SHARDING | +-----------------+------------+---------------+----------+ | TBLGROUP1 | TBL1 | SYS | ADAPTIVE | | TBLGROUP1 | TBL2 | SYS | ADAPTIVE | +-----------------+------------+---------------+----------+ 2 rows in set表组内的表
TBL1和TBL2全部是一级分区表,且分区类型、分区个数、分区值均相同,符合修改规则,SHARDING属性修改成功。