首批通过分布式安全可靠测评,为关键业务系统打造
CLEAR_BALANCE_WEIGHT
更新时间:2026-07-15 20:56:58
CLEAR_BALANCE_WEIGHT 用于清除分区权重。
使用限制及注意事项
对于 V4.2.5 版本,从 V4.2.5 BP2 开始支持清除分区权重。
仅用户租户支持通过调用
CLEAR_BALANCE_WEIGHT子程序清除分区权重,系统租户不支持清除分区权重。清除表级分区权重是将所有分区上设置的表级权重删除。如果该表设置过分区级权重,则系统会保留分区级权重。
语法
DBMS_BALANCE.CLEAR_BALANCE_WEIGHT(
schema_name IN VARCHAR2,
table_name IN VARCHAR2,
partition_name IN VARCHAR2 DEFAULT NULL,
subpartition_name IN VARCHAR2 DEFAULT NULL);
参数说明
| 参数 | 说明 |
|---|---|
| schema_name | 表所属的 Schema 名 |
| table_name | 表名 |
| partition_name | 一级分区名 |
| subpartition_name | 二级分区名。仅语法支持,当前暂不支持设置二级分区权重。 |
示例
假设用户
USR2(Oracle 模式中 Schema 名与用户名同名)下,有一设置了分区权重的表TBL1_H。查询其分区权重信息,语句如下:
obclient[USR2]> 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 | USR2 | TBL1_H | NULL | NULL | NULL | 201006 | NULL | 500002 | | 500002 | 500003 | NULL | 2 | USR2 | TBL1_H | P0 | NULL | NULL | 201006 | NULL | 500003 | +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+ 2 rows in set清除表
TBL1_H的表级分区权重。obclient [USR2]> delimiter //obclient[USR2]> BEGIN DBMS_BALANCE.CLEAR_BALANCE_WEIGHT('USR2','TBL1_H'); END;//obclient [USR2]> delimiter ;清除后,查询表设置过的分区权重信息。
obclient[USR2]> 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 | 500003 | NULL | 2 | USR2 | TBL1_H | P0 | NULL | NULL | 201006 | NULL | 500003 | +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+ 1 row in set清除表
TBL1_H中一级分区P0的分区权重。obclient [USR2]> delimiter //obclient[USR2]> BEGIN DBMS_BALANCE.CLEAR_BALANCE_WEIGHT('USR2','TBL1_H','P0'); END;//obclient [USR2]> delimiter ;清除后,再次查询表设置过的分区权重信息。
obclient[USR2]> SELECT * FROM SYS.DBA_OB_OBJECT_BALANCE_WEIGHT;查询结果为空。