説明
このステートメントは、テーブルグループに複数のテーブルを追加し、テーブルグループの属性を変更するために使用します。
権限要件
ALTER TABLEGROUP ステートメントを実行するには、現在のユーザーが ALTER 権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
使用上の制限と注意事項
OceanBaseデータベースのアップグレード中は、テーブルグループの属性を変更することは禁止されています。
V4.4.2バージョンでは、V4.4.2 BP1バージョンから、テーブルグループ内のパーティションの配置方法は
SHARDINGとSCOPEによって共同で決定されます。現在のバージョンではSHARDINGプロパティとSCOPEプロパティの一部の組み合わせのみがサポートされており、サポートされていない組み合わせを指定するとエラーが発生します。サポートされている組み合わせは以下の通りです:SHARDING = 'NONE'+SCOPE = 'SERVER'SHARDING = 'NONE'+SCOPE = 'ZONE'SHARDING = 'NONE'+SCOPE = 'CLUSTER'SHARDING = 'PARTITION'+SCOPE = 'CLUSTER'SHARDING = 'ADAPTIVE'+SCOPE = 'CLUSTER'
構文
ALTER TABLEGROUP tablegroup_name
{ADD [TABLE] table_name_list
| [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 | 変更対象のテーブルグループ名。 |
| ADD [TABLE] table_name_list | テーブルグループにテーブルを追加するために使用します。テーブルグループに複数のテーブルを追加する場合、テーブルとテーブルの間はカンマ(,)で区切ります。複数のテーブルを追加する場合、テーブル名の重複は許可されます。追加するテーブルが既に対象のテーブルグループに属している場合、OceanBaseデータベースはエラーを報告しません。 |
| sharding_option | オプションです。テーブルグループの SHARDING プロパティを変更するために使用します。SHARDING は、テーブルグループ内の各テーブルに対応するパーティションの集約方式を決定します。集約された一連のパーティションはPartition Group(パーティショングループ)と呼ばれ、分散の最小単位です。詳細については、後述の sharding_option を参照してください。 |
| scope_option | オプションです。テーブルグループの SCOPE プロパティを変更するために使用します。SCOPE は、テーブルグループ内のすべての集約されたPartition Groupの分散範囲を決定します。詳細については、後述の scope_option を参照してください。
説明V4.4.2バージョンでは、V4.4.2 BP1バージョンからテーブルグループの |
sharding_option
NONE:テーブルグループに追加するテーブルに制限がないことを示します。PARTITION:テーブルグループに追加するテーブルに対応するパーティションのパーティション分割方式が、テーブルグループ内のすべてのテーブルのパーティション分割方式と一致する必要があることを示します。これには、パーティションタイプ、パーティション数、パーティション値が含まれます。ADAPTIVE:テーブルグループに追加するテーブルに対応するパーティションとサブパーティションのパーティション分割方式が、テーブルグループ内のすべてのテーブルのパーティションとサブパーティションのパーティション分割方式と一致する必要があることを示します。これには、パーティションタイプ、パーティション数、パーティション値が含まれます。テーブルグループに追加するテーブルは、同一の種類のパーティションテーブル(パーティションテーブルまたはサブパーティションテーブル)でなければなりません。
同じパーティション分割方式には以下が含まれます:
- パーティションタイプが同じであること(例:どちらもHash + Rangeパーティション)。
- Hashパーティションの場合、参照する列数とパーティション数が同じであること。
- Rangeパーティションの場合、参照する列数とパーティション数が同じであり、Rangeの分割ポイントが同じであること。
サブパーティションについても、そのパーティションタイプに応じて、上記の要件が適用されます。
scope_option
SERVER:すべてのPartition GroupのLeaderが同一ノードに集約されていることを示します。ZONE:すべてのPartition GroupのLeaderが同一Zone内に分散して配置されていることを示します。CLUSTER:すべてのPartition GroupのLeaderがクラスタ内の各ノードに分散して配置されていることを示します。
例
tblgroup1という名前のテーブルグループを作成し、そのSHARDING属性をNONEに設定します。そして、パーティションテーブルtbl1とパーティションテーブルtbl2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(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') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 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') ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup1 ADD tbl1,tbl2; Query OK, 0 rows affectedtbl1とtbl2のパーティショニング方法が同じであるため、SHARDING属性をPARTITIONまたはADAPTIVEに変更できます。obclient> ALTER TABLEGROUP tblgroup1 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup1 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affectedtblgroup2という名前のテーブルグループを作成し、そのSHARDING属性をNONEに設定します。非パーティションテーブルtbl1とパーティションテーブルtbl2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col INT); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup2 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') ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup2 ADD tbl1,tbl2; Query OK, 0 rows affectedテーブルグループ
tblgroup2には非パーティションテーブルとパーティションテーブルが含まれているため、SHARDING属性をPARTITIONまたはADAPTIVEに変更することはできません。obclient> ALTER TABLEGROUP tblgroup2 SHARDING = 'PARTITION'; OBE-00600: internal error code, arguments: -4179, not all tables are non-partitioned or partitioned, modify tablegroup sharding attribute not allowed obclient> ALTER TABLEGROUP tblgroup2 SHARDING = 'ADAPTIVE'; OBE-00600: internal error code, arguments: -4179, not all tables are non-partitioned or partitioned, modify tablegroup sharding attribute not allowedtblgroup3という名前のテーブルグループを作成し、そのSHARDING属性をNONEに設定します。パーティションテーブルtbl1とパーティションテーブルtbl2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup3 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 NUMBER,col2 VARCHAR2(50)) PARTITION BY LIST(col1) SUBPARTITION BY LIST (col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(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') ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup3 ADD tbl1,tbl2; Query OK, 0 rows affectedテーブルグループ
tblgroup3内のtbl1とtbl2のパーティションタイプは同じですが、サブパーティションのタイプが異なります(サブパーティションの数が異なる)。そのため、SHARDING属性をPARTITIONに変更できますが、ADAPTIVEには変更できません。obclient> ALTER TABLEGROUP tblgroup3 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup3 SHARDING = 'ADAPTIVE'; OBE-00600: internal error code, arguments: -4179, subpartition num not matched, modify tablegroup sharding attribute not allowedtblgroup4という名前のテーブルグループを作成し、そのSHARDING属性をADAPTIVEに設定します。このテーブルグループ内のテーブルtbl1とテーブルtbl2のパーティション数を変更すると、テーブルグループ内のすべてのテーブルのパーティショニング方法が一致しなくなります。そのため、新しいテーブルtbl3をこのテーブルグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup4 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 int,col2 int) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(2021), SUBPARTITION mp1 VALUES LESS THAN(2022), SUBPARTITION mp2 VALUES LESS THAN(2023) ) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200) ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 int,col2 int) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(2021), SUBPARTITION mp1 VALUES LESS THAN(2022), SUBPARTITION mp2 VALUES LESS THAN(2023) ) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200) ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup4 ADD tbl1,tbl2; Query OK, 0 rows affected obclient> ALTER TABLE tbl1 ADD PARTITION p3 VALUES LESS THAN(400), PARTITION p4 VALUES LESS THAN(500); Query OK, 0 rows affected obclient> ALTER TABLE tbl2 DROP SUBPARTITION p0smp0,p0smp1; Query OK, 0 rows affected obclient> CREATE TABLE tbl3(col1 int,col2 int) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(2021), SUBPARTITION mp1 VALUES LESS THAN(2022), SUBPARTITION mp2 VALUES LESS THAN(2023) ) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200) ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup4 ADD tbl3; OBE-00600: internal error code, arguments: -4179, partition num not equal, add table to tablegroup not allowed