OceanBaseデータベースでは、DYNAMIC_PARTITION_POLICY ブロックを変更することで、テーブルのダイナミックパーティション管理プロパティを変更できます。
本記事では、SQLステートメントを使用してダイナミックパーティションテーブルを変更する方法について説明します。
説明
OceanBaseデータベースV4.3.5では、V4.3.5 BP2バージョンから DYNAMIC_PARTITION_POLICY を指定してダイナミックパーティションテーブルを作成できるようになりました。
制限事項と注意点
動的パーティション管理パラメータを変更した後、事前に作成されたパーティションの変更や期限切れのパーティションの削除は即時に反映されません。次回の動的パーティション管理タスクが自動的にスケジュールされるか、手動で動的パーティション管理タスクを一度スケジュールする必要があります。動的パーティション管理タスクの詳細な説明については、動的パーティション管理タスクを参照してください。
権限要件
動的パーティションテーブルを変更するには、ALTER権限が必要です。OceanBaseデータベースの権限に関する詳細な説明については、Oracleモードの権限分類を参照してください。
構文
動的パーティションテーブルを作成するSQL文の書式は以下のとおりです:
ALTER TABLE table_name [SET] DYNAMIC_PARTITION_POLICY [=] (dynamic_partition_policy_list);
dynamic_partition_policy_list:
dynamic_partition_policy_option [, dynamic_partition_policy_option ...]
dynamic_partition_policy_option:
ENABLE = {true | false}
| PRECREATE_TIME = {'-1' | '0' | 'n {hour | day | week | month | year}'}
| EXPIRE_TIME = {'-1' | '0' | 'n {hour | day | week | month | year}'}
動的パーティション管理プロパティパラメータの説明
| プロパティ名 | 説明 | 必須 | 変更は可能か |
|---|---|---|---|
| ENABLE | 動的パーティション管理を有効にするかどうかを示します。値は以下のとおりです:
|
いいえ | はい |
| PRECREATE_TIME | 事前作成時間を示します。動的パーティション管理をスケジュールするたびに、パーティションが事前作成され、最大パーティションの上限 > now() + precreate_time となります。値は以下のとおりです:
説明
|
いいえ | はい |
| EXPIRE_TIME | パーティションの有効期限を示します。動的パーティション管理をスケジュールするたびに、パーティションの上限 < now() - expire_time のすべての期限切れパーティションが削除されます。値は以下のとおりです:
|
いいえ | はい |
テーブル構文を変更するための詳細なパラメータについては、ALTER TABLEを参照してください。
例
テーブル
test_tbl1の動的パーティション情報を確認します。SELECT * FROM sys.DBA_OB_DYNAMIC_PARTITION_TABLES WHERE TABLE_NAME = 'TEST_TBL1';クエリ結果は次のとおりです:
+---------------+------------+----------+----------------------------------------+--------+-----------+----------------+-------------+-----------+------------------+ | DATABASE_NAME | TABLE_NAME | TABLE_ID | MAX_HIGH_BOUND_VAL | ENABLE | TIME_UNIT | PRECREATE_TIME | EXPIRE_TIME | TIME_ZONE | BIGINT_PRECISION | +---------------+------------+----------+----------------------------------------+--------+-----------+----------------+-------------+-----------+------------------+ | SYS | TEST_TBL1 | 507940 | Timestamp '2024-11-11 13:30:00.000000' | TRUE | HOUR | 3HOUR | 1DAY | +8:00 | NONE | +---------------+------------+----------+----------------------------------------+--------+-----------+----------------+-------------+-----------+------------------+ 1 row in set動的パーティションテーブル
test_tbl1を変更し、動的パーティションのプロパティを次のように設定します:- 現在の時刻以降1日以内にパーティションを事前作成する。
- パーティションは期限切れにならない。
ALTER TABLE test_tbl1 DYNAMIC_PARTITION_POLICY( ENABLE = true, PRECREATE_TIME = '1 day', EXPIRE_TIME = '-1' );再度テーブル
test_tbl1の動的パーティション情報を確認します。SELECT * FROM sys.DBA_OB_DYNAMIC_PARTITION_TABLES WHERE TABLE_NAME = 'TEST_TBL1';クエリ結果は次のとおりです:
+---------------+------------+----------+----------------------------------------+--------+-----------+----------------+-------------+-----------+------------------+ | DATABASE_NAME | TABLE_NAME | TABLE_ID | MAX_HIGH_BOUND_VAL | ENABLE | TIME_UNIT | PRECREATE_TIME | EXPIRE_TIME | TIME_ZONE | BIGINT_PRECISION | +---------------+------------+----------+----------------------------------------+--------+-----------+----------------+-------------+-----------+------------------+ | SYS | TEST_TBL1 | 507940 | Timestamp '2024-11-11 13:30:00.000000' | TRUE | HOUR | 1DAY | -1 | +8:00 | NONE | +---------------+------------+----------+----------------------------------------+--------+-----------+----------------+-------------+-----------+------------------+ 1 row in set説明
動的パーティション管理パラメータを変更した後、事前作成されたパーティションや期限切れのパーティションが削除される効果は即時には反映されません。次回の動的パーティション管理タスクが自動的にスケジュールされるか、手動で一度動的パーティション管理タスクをスケジュールする必要があります。詳細については、動的パーティション管理タスクを参照してください。