DBAtlas · 数据库运维图谱

收集统计信息(DBMS_STATS)

Oracle维护

命令

-- Single table (including cascaded indexes):
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'CUSTOMER_APP', tabname => 'CUSTOMER', cascade => TRUE, estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, degree => 4);

-- Whole schema:
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'CUSTOMER_APP', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, cascade => TRUE, degree => 4);

-- Whole database (run only in a maintenance window / off-peak hours):
EXEC DBMS_STATS.GATHER_DATABASE_STATS(estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, degree => 4);

作用

为优化器收集表/索引统计信息;确保生成正确的执行计划。

适用场景

大量 DML/加载之后、执行计划回归时、新建索引/表之后。

注意

统计信息变化可能改变执行计划;在关键系统上先用 AWR 测试/对比。DEGREE 并行度会消耗 CPU。GATHER_DATABASE_STATS 在业务高峰期开销很大。

在 DBAtlas 中打开 →

相关内容