---
title: "GATHER_SCHEMA_STATS - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: GATHER_SCHEMA_STATS GATHER_SCHEMA_STATS 过程用于收集指定用户中所有对象的统计信息。 功能适用性 该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持。 语法 DBMS_STATS.GATHER_SCHEMA_STATS ( ownname …
---
切换语言

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

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

# GATHER_SCHEMA_STATS

更新时间：2026-03-26 17:56:44

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/600.pl-reference/300.pl-oracle/1400.pl-system-package-oracle/15900.dbms-stats-oracle/1800.gather-schema-stats-oracle.md)  

`GATHER_SCHEMA_STATS` 过程用于收集指定用户中所有对象的统计信息。

#### 功能适用性

该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持。

## 语法

```sql
DBMS_STATS.GATHER_SCHEMA_STATS (
  ownname            VARCHAR2,
  estimate_percent   NUMBER DEFAULT AUTO_SAMPLE_SIZE,
  block_sample       BOOLEAN DEFAULT FALSE,
  method_opt         VARCHAR2 DEFAULT DEFAULT_METHOD_OPT,
  degree             NUMBER DEFAULT NULL,
  granularity        VARCHAR2 DEFAULT DEFAULT_GRANULARITY,
  cascade            BOOLEAN DEFAULT NULL,
  no_invalidate      BOOLEAN DEFAULT FALSE,
  stattype           VARCHAR2 DEFAULT 'DATA',
  force              BOOLEAN DEFAULT FALSE);

```

## 参数说明

| 参数 | 解释 |
| --- | --- |
| ownname | 用户名称。如果用户名设置为 `NULL`，会默认使用当前登录用户名。 |
| estimate_percent | 预估行的百分比。有效范围为 [0.000001,100]。 |
| block_sample | 确定数据库是使用随机块抽样 (`TRUE`) 还是随机行抽样 (`FALSE`)。默认值为 `FALSE`。随机块采样效率更高，但如果数据不是随机分布在磁盘上，那么样本值可能存在相关性。 |
| method_opt | 在全局、Schema、数据库或字典级别设置首选项时，只允许使用 `FOR ALL` 语法。除此之外，`method_opt` 只能为以下选项之一，或两者的组合：   - `FOR ALL [INDEXED \| HIDDEN] COLUMNS [size_clause]` - `FOR COLUMNS [column_clause]` 其中，`size_clause` 定义为 `size_clause := SIZE {integer \| REPEAT \| AUTO \| SKEWONLY}`。 `column_clause` 定义为 `column_clause := column_name \| extension name \| extension`。 - `integer`：直方图 Bucket 的数量。有效范围为 [1,2048]。 - `REPEAT`：仅在已有直方图的列上收集直方图。 - `AUTO`：根据数据分布和列的工作负载确定要收集直方图的列。 - `SKEWONLY`：根据列的数据分布确定收集直方图的列。 - `column_name`：列名。 - `extension`：可以是 `(column_name, colume_name [, ...])` 格式的列组或表达式。   默认值为 `FOR ALL COLUMNS SIZE AUTO`。 |
| degree | 并行度。默认值是 `NULL`。`NULL` 表示使用由 `CREATE TABLE` 或 `ALTER TABLE` 语句中的 `DEGREE` 子句指定的表默认值。当使用 `DEGREE=>NULL`、`DEGREE=>n` 时，如果对象的大小不保证实现并行执行，则 `DBMS_STATS` 可能会使用串行执行。 |
| granularity | 要收集的统计信息的粒度（仅适用于当表已分区时）。   - `ALL`：收集所有（子分区、分区和全局）统计信息。 - `APPROX_GLOBAL AND PARTITION`： 类似于 `GLOBAL AND PARTITION`，但在这种情况下，全局统计信息是分区级别统计信息的汇总。此选项将汇总不同值的数量和索引不同键的数量之外的所有统计信息。但只汇总带有统计信息的分区。如果 `partname` 为 `NULL` 或无法执行汇总（例如缺少其中一个分区的统计信息），则会收集全局统计信息。 - `AUTO`：根据分区类型确定粒度。是默认值。 - `DEFAULT`：收集全局和分区级别的统计信息。此选项已废弃，建议使用 `GLOBAL AND PARTITION`。 - `GLOBAL`：收集全局统计数据。 - `GLOBAL AND PARTITION`：收集全局和分区级别的统计信息。即使是复合分区对象，也不会收集子分区级别的统计信息。 - `PARTITION`：收集分区级别的统计信息。 - `SUBPARTITION`：收集子分区级别的统计信息。 |
| cascade | 除了收集表和列统计信息之外，还会收集有关索引的统计信息，等效于在 Schema 中的每个索引上运行 `GATHER_INDEX_STATS` 过程。 |
| no_invalidate | 收集统计信息时是否刷 Plan Cache。设置为 `TRUE` 表示收集统计信息时不刷 Plan Cache。 |
| stattype | 当前统计信息所存储的位置。 |
| force | 是否强制收集，并忽略锁的状态。默认为 `FALSE`。如果设置为 `TRUE`，即使统计信息被锁定，也会收集统计信息。 |

## 异常情况

| 错误码 | 描述 |
| --- | --- |
| OBE-20000 | 该用户不存在或权限不足。 |
| OBE-20001 | 输入值错误。 |

## 使用说明

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

需要注意的是，对于取值为 `TRUE` 和 `FALSE` 的参数，需要在 `BEGIN ... END` 块中执行该过程。

## 示例

收集 `hr` 下所有表的统计信息。

```sql
obclient> BEGIN
    DBMS_STATS.GATHER_SCHEMA_STATS ('hr', degree=>64,no_invalidate=>TRUE);
    END;
Query OK, 0 rows affected

```

## 相关文档

更多关于收集指定用户中所有对象统计信息的介绍，参见 [手动统计信息收集](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004481075)。

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