---
title: "COPY_TABLE_STATS - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: COPY_TABLE_STATS COPY_TABLE_STATS 过程用于将源分区（或子分区）的统计信息复制到目标分区（或子分区）。 语法 DBMS_STATS.COPY_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, srcpartname VARCHAR2, …
---
切换语言

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

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

# COPY_TABLE_STATS

更新时间：2026-03-15 20:01:11

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/600.pl-reference/200.pl-mysql/1000.pl-system-package-mysql/15900.dbms-stats-mysql/4550.copy-table-stats-mysql.md)  

`COPY_TABLE_STATS` 过程用于将源分区（或子分区）的统计信息复制到目标分区（或子分区）。

## 语法

```sql
DBMS_STATS.COPY_TABLE_STATS (
  ownname          VARCHAR2,
  tabname          VARCHAR2,
  srcpartname      VARCHAR2,
  dstpartname      VARCHAR2,
  scale_factor     VARCHAR2,
  flags            NUMBER DEFAULT NULL,
  force            BOOLEAN DEFAULT FALSE);

```

## 参数解释

| 参数 | 说明 |
| --- | --- |
| ownname | 指定源和目标分区（或子分区）所在表的 Schema 名称。 |
| tabname | 指定源和目标分区（或子分区）所对应的表的名称。 |
| srcpartname | 指定要复制统计信息的源分区（或子分区）。 |
| dstpartname | 指定接收统计信息的目标分区（或子分区）。 |
| scale_factor | 在复制到目标分区（或子分区）时，用于按比例调整 nblks（块数）、nrows（行数）等统计属性的数值。 |
| flags | 默认为 `NULL`。一般用户无需设置。 |
| force | 默认为 `FALSE`。若该参数值设为 `TRUE`，即使目标分区（或子分区）当前处于锁定状态，仍会继续执行统计信息的复制操作。 |

## 异常情况

| 错误码 | 描述 |
| --- | --- |
| HY000 | 表示分区名称无效。 |
| HY000 | 表示源分区和目标分区类型不同。 |

## 使用说明

该过程按照以下方式更新目标分区中的最小值和最大值：

- 如果分区类型为 HASH，则目标分区的最小值和最大值与源分区的相同。
 - 如果分区类型为 LIST，则行为取决于目标分区的设置：

     - 若目标分区是 DEFAULT 分区，则：

           - 目标分区的最小值设置为源分区的最小值。
           - 目标分区的最大值设置为源分区的最大值。
     - 如果目标分区是一个 NOT DEFAULT 分区，则：

           - 目标分区的最小值设置为描述目标分区的值列表中的最小值。
           - 目标分区的最大值设置为描述目标分区的值列表中的最大值。
 - 如果分区类型为 RANGE，则：

     - 若目标分区是第一个分区，则：

           - 若目标分区的上界是 `MAXVALUE`，则：

                   - 目标分区和源分区是同一个分区，无需拷贝或更新最小值和最大值，即它的最小值和最大值不需要设置。
           - 若目标分区的上界不是 `MAXVALUE`，则：

                   - 目标分区的最大值最小值都会被设置为目标分区的上界。
     - 若目标分区不是第一个分区，则：

           - 若目标分区是单列分区键，则：

                   - 若源分区只有一个值且等于源分区的下边界，并且目标分区的上界不是 `MAXVALUE`，则目标分区的最大值和最小值都设置为目标分区的下边界。
                   - 否则：

                             - 若目标分区的上界是 `MAXVALUE`，则最大值和最小值都设置成目标分区的下边界（也就是前一个分区的上边界）。
                             - 若目标分区的上界不是 `MAXVALUE`，则最大值设置成目标分区的上边界，最小值设置成目标分区的下边界。
           - 若目标分区是多列分区键，则：

                   - 若源分区只有一个值且等于源分区的下边界，则目标分区的最大值和最小值都设置为目标分区的下边界。
                   - 否则，当前列 **C** 采用前述规则，对于后续列 **Cx**，则：

                             - **Cx-1** 在目标分区和目标分区之前的 `MAXVALUE` 相同，则目标分区的最大值设置为目标分区的上边界。
                             - 否则，目标分区列的最大值设置为目标分区上限和源分区列最大值中的较大值。

要调用此过程，您必须是表的所有者。对于 `SYS` 拥有的对象，需要是表的所有者或具有 `SYSDBA` 权限才能调用此过程。

## 示例

创建一个 HASH 分区表 `test_copy_tbl1` 并执行相关的统计信息操作。

1. （可选）如果存在名为 `test_copy_tbl1` 的表，那么执行下面语句删除它。

   ```sql
   DROP TABLE IF EXISTS test_copy_tbl1;

   ```
 2. 执行下面语句，创建一个名为 `test_copy_tbl1` 的表，包含两个整数列 `col1` 和 `col2`，并通过 HASH 函数对 `col1` 进行分区，共分为四个分区：`p0`、`p1`、`p2` 和 `p3`。

   ```sql
   CREATE TABLE test_copy_tbl1(col1 INT, col2 INT) PARTITION BY HASH(col1) PARTITIONS 4;

   ```
 3. 执行下面语句，向 `test_copy_tbl1` 表中插入数据。

   ```sql
   INSERT INTO test_copy_tbl1 VALUES (1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(8,9),(9,10),(10,11);

   ```
 4. 执行下面语句，调用 `DBMS_STATS` 包中的 `gather_table_stats` 过程收集 `test_copy_tbl1` 表中 `p0` 分区的统计信息。

   ```sql
   CALL dbms_stats.gather_table_stats(NULL, 'test_copy_tbl1', 'p0', method_opt=>'for all columns size 32');

   ```
 5. 执行下面语句，调用 `DBMS_STATS` 包中的 `copy_table_stats` 过程，将 `test_copy_tbl1` 表中 `p0` 分区的统计信息按比例因子 2 复制到 `p1` 分区。

   ```sql
   CALL dbms_stats.copy_table_stats(NULL, 'test_copy_tbl1', 'p0', 'p1', '2');

   ```

   或使用命名参数方式：

   ```sql
   CALL dbms_stats.copy_table_stats(NULL, 'test_copy_tbl1', 'p0', 'p1', scale_factor=>'2');

   ```

 上一篇 下一篇 ![有帮助](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) 咨询热线
