説明
このステートメントは、テーブルグループに複数のテーブルを追加し、テーブルグループの属性を変更するために使用します。
権限要件
ALTER TABLEGROUP ステートメントを実行するには、現在のユーザーが ALTER 権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
構文
テーブルグループに複数のテーブルを追加します。
ALTER TABLEGROUP tablegroup_name ADD [TABLE] table_name [, table_name...];テーブルグループのパーティションルールを変更します。
ALTER TABLEGROUP tablegroup_name tablegroup_option; tablegroup_option: SHARDING = 'NONE' | 'PARTITION' | 'ADAPTIVE'
パラメータの説明
パラメータ |
説明 |
|---|---|
| tablegroup_name | テーブルグループ名です。テーブルグループに複数のテーブルを追加する場合、テーブルとテーブルの間はカンマ(',')で区切ります。複数のテーブルを追加する際、テーブル名の重複は許可されます。追加しようとしているテーブルが既に対象のテーブルグループに属している場合、OceanBaseデータベースはエラーを報告しません。 |
| SHARDING | テーブルグループの属性です。SHARDING 属性を指定しない場合、デフォルトで ADAPTIVE のテーブルグループが作成されます。SHARDING の取り得る値は以下のとおりです:
|
例
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