パーティションの重みを設定した後、業務上の必要に応じて、元の設定をクリアできます。
使用制限
ユーザーテナントのみがパーティション重みの手動クリアをサポートしています。システムテナントはサポートしていません。
テーブルレベルのパーティション重みをクリアすると、すべてのパーティションに設定されたテーブルレベルの重みが削除されます。そのテーブルにパーティションレベルの重みが設定されている場合、システムはパーティションレベルの重みを保持します。
MySQLモードでのパーティション重みのクリア
ユーザーがクラスタのMySQLテナントにログインします。
接続例は以下のとおりです。データベースへの接続時は、実際の環境に準じてください。
obclient -h10.xx.xx.xx -P2883 -uroot@mysql001#obdemo -p***** -Aテーブルのパーティション重み情報を取得します。
obclient(root@mysql001)[oceanbase]> SELECT * FROM oceanbase.DBA_OB_OBJECT_BALANCE_WEIGHT;クエリ結果は次のとおりです:
+----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+ | TABLE_ID | PARTITION_ID | SUBPARTITION_ID | WEIGHT | DATABASE_NAME | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | TABLEGROUP_NAME | DATABASE_ID | TABLEGROUP_ID | OBJECT_ID | +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+ | 500002 | NULL | NULL | 1 | test | tbl1_h | NULL | NULL | NULL | 500001 | NULL | 500002 | | 500002 | 500003 | NULL | 2 | test | tbl1_h | p0 | NULL | NULL | 500001 | NULL | 500003 | +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+ 2 rows in setテーブルのパーティション重みをクリアします。
テーブルレベルの重みをクリアする
テーブル
tbl1_hのパーティション重みをクリアするステートメントは以下のとおりです。obclient(root@mysql001)[test]> CALL DBMS_BALANCE.CLEAR_BALANCE_WEIGHT('test','tbl1_h');パーティションレベルの重みをクリアする
テーブル
tbl1_hのパーティションp0のパーティション重みをクリアするステートメントは以下のとおりです。obclient(root@mysql001)[test]> CALL DBMS_BALANCE.CLEAR_BALANCE_WEIGHT('test','tbl1_h','p0');
Oracleモードでのパーティション重みのクリア
- ユーザーがクラスタのOracleテナントにログインします。
接続例は以下のとおりです。データベースへの接続時は、実際の環境に準じてください。
obclient -h10.xx.xx.xx -P2883 -usys@oracle001#obdemo -p***** -A
- テーブルのパーティション重み情報を取得します。
obclient(SYS@oracle001)[SYS]> SELECT * FROM SYS.DBA_OB_OBJECT_BALANCE_WEIGHT;
クエリ結果の例は以下のとおりです:
+----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+
| TABLE_ID | PARTITION_ID | SUBPARTITION_ID | WEIGHT | DATABASE_NAME | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | TABLEGROUP_NAME | DATABASE_ID | TABLEGROUP_ID | OBJECT_ID |
+----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+
| 500002 | NULL | NULL | 1 | SYS | TBL1_H | NULL | NULL | NULL | 201006 | NULL | 500002 |
| 500002 | 500003 | NULL | 2 | SYS | TBL1_H | P0 | NULL | NULL | 201006 | NULL | 500003 |
+----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+
2 rows in set
- テーブルのパーティション重みをクリアします。
テーブルレベルの重みをクリアする
テーブル
TBL1_Hのパーティション重みをクリアするステートメントは以下のとおりです。obclient(SYS@oracle001)[SYS]> delimiter //obclient(SYS@oracle001)[SYS]> BEGIN DBMS_BALANCE.CLEAR_BALANCE_WEIGHT('SYS','TBL1_H'); END;//obclient(SYS@oracle001)[SYS]> delimiter ;パーティションレベルの重みをクリアする
テーブル
TBL1_HのパーティションP0のパーティション重みをクリアするステートメントは以下のとおりです。obclient(SYS@oracle001)[SYS]> delimiter //obclient(SYS@oracle001)[SYS]> BEGIN DBMS_BALANCE.CLEAR_BALANCE_WEIGHT('SYS','TBL1_H','P0'); END;//obclient(SYS@oracle001)[SYS]> delimiter ;
次のステップ
パーティションの重みをクリアした後、テーブル上のパーティション分布が不均衡になる可能性があります。できるだけ早くパーティションの均衡を達成したい場合は、DBMS_BALANCE.TRIGGER_PARTITION_BALANCEサブプログラムを呼び出して、手動でパーティションの均衡を一度トリガーすることができます。手動でのパーティション均衡の詳細な操作については、パーティション均衡の手動トリガーを参照してください。
または、定期的なパーティション均衡タスクのトリガーを待つこともできます。定期的なパーティション均衡タスクの関連情報については、定期的なパーティション均衡タスクの設定を参照してください。