---
title: github-fill
description: SET_BALANCE_WEIGHT SET_BALANCE_WEIGHT 用于设置分区权重。按照级别从上到下，支持设置表级、分区级的分区权重。 使用限制及注意事项 对于 V4.2.5 版本，从 V4.2.5 BP2 版本开始支持手动设置分区权重。 仅用户租户支持手动设置分区权重，系统租户不支持设置分区权重。 当前仅…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.5 LTS

# SET_BALANCE_WEIGHT

更新时间：2026-07-15 20:56:58

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.5/zh-CN/700.reference/500.sql-reference/300.pl-reference/300.pl-oracle/1400.pl-system-package-oracle/2700.dbms-balance-oracle/150.set-balance-weight-oracle.md)  

`SET_BALANCE_WEIGHT` 用于设置分区权重。按照级别从上到下，支持设置表级、分区级的分区权重。

## 使用限制及注意事项

- 对于 V4.2.5 版本，从 V4.2.5 BP2 版本开始支持手动设置分区权重。
 - 仅用户租户支持手动设置分区权重，系统租户不支持设置分区权重。
 - 当前仅支持对非分区表、以及分区表的分区设置分区权重，暂不支持对二级分区设置分区权重。
 - 仅支持对已存在的实体分区设置权重，不支持在建表时指定权重，即需要先创建表后，再为表设置分区权重。
 - 分区权重仅支持整数，取值范围为 [1, +∞)。默认情况下，分区没有权重。
 - 设置分区权重时，建议分区权重的档位尽量少，建议最多划分三挡：

     - 大权重 = 100% * 分区数
     - 中权重 = 50% * 分区数
     - 小权重 = 1
 - 对于不需要参与权重均衡的分区表，建议不要设置分区权重。
 - 设置分区权重时，下级分区默认继承上级分区权重。如果同时对多个级别设置了分区权重，则下级权重将覆盖上级权重。
 - 设置分区权重后，如果用户执行了 Offline DDL 操作（例如 Truncate Table、Truncate Partition 等操作）导致分区实体发生变化，原来设置的分区权重也会失效，需要用户重新设置分区权重。可能会导致分区权重失效的 Offline DDL 参见 [Online DDL 和 Offline DDL 操作（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001503194)。

## 语法

```sql
DBMS_BALANCE.SET_BALANCE_WEIGHT(
    weight              IN BINARY_INTEGER,
    schema_name         IN VARCHAR2,
    table_name          IN VARCHAR2,
    partition_name      IN VARCHAR2 DEFAULT NULL,
    subpartition_name   IN VARCHAR2 DEFAULT NULL);

```

## 参数说明

| **参数** | **说明** |
| --- | --- |
| weight | 分区权重，即分区之间占用资源（CPU、内存、磁盘等）的相对比重。取值范围为 [1, +∞)。 |
| schema_name | 表所属的 Schema 名 |
| table_name | 表名 |
| partition_name | 一级分区名 |
| subpartition_name | 二级分区名。仅语法支持，当前暂不支持设置二级分区权重。 |

## 示例

1. 假设用户 `USR2` 创建了一个 Hash 分区表 `TBL1_H`。

   ```shell
   obclient[USR2]> CREATE TABLE TBL1_H(col1 INT,col2 VARCHAR(50)) PARTITION BY HASH(col1) PARTITIONS 5;

   ```
 2. 查看该表的分区信息，语句如下。

   ```shell
   obclient[USR2]> SELECT TABLE_NAME, PARTITION_NAME FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'TBL1_H';

   ```

   得到的具体分区信息如下：

   ```shell
   +------------+----------------+
   | TABLE_NAME | PARTITION_NAME |
   +------------+----------------+
   | TBL1_H     | P4             |
   | TBL1_H     | P3             |
   | TBL1_H     | P2             |
   | TBL1_H     | P1             |
   | TBL1_H     | P0             |
   +------------+----------------+
   5 rows in set

   ```
 3. 设置表 `TBL1_H` 的表级分区权重为 1。

   ```shell
   obclient [USR2]> delimiter //

   ```

   ```shell
   obclient[USR2]> BEGIN
                 DBMS_BALANCE.SET_BALANCE_WEIGHT(1,'USR2','TBL1_H');
                 END;//

   ```

   ```shell
   obclient [USR2]> delimiter ;

   ```
 4. 设置表 `TBL1_H` 的表级分区权重后，查询表设置过的分区权重信息。

   ```shell
   obclient[USR2]> SELECT * FROM SYS.DBA_OB_OBJECT_BALANCE_WEIGHT;

   ```

   结果如下：

   ```shell
   +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+
   | 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 |
   +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+
   1 row in set

   ```
 5. 再设置表 `TBL1_H` 中一级分区 `P0` 的分区权重为 2。

   ```

   ```shell
   obclient[USR2]> BEGIN
                 DBMS_BALANCE.SET_BALANCE_WEIGHT(2,'USR2','TBL1_H','P0');
                 END;//

   ```

   ```
 6. 再次查询表设置过的分区权重信息。

   ```shell
   obclient[USR2]> obclient[USR2]> SELECT * FROM SYS.DBA_OB_OBJECT_BALANCE_WEIGHT;

   ```

   查询结果如下：

   ```shell
   +----------+--------------+-----------------+--------+---------------+------------+----------------+-------------------+-----------------+-------------+---------------+-----------+
   | 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

   ```

## 相关文档

- [租户内均衡](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502852)
 - [设置分区权重](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002072270)
 - [清除分区权重](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002072271)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
