我运行了“执行 DBMS_STATS.GATHER_SCHEMA_STATS('my_schema_name',100);”我看到的输出只是“PL/SQL 过程成功完成”。我在哪里可以看到此过程收集的实际统计数据?
我本来希望看到此存储过程收集的架构统计信息,但我只看到确认它已成功完成的文本。
dbms_stats.gather_schema_stats
收集整个模式中所有过时表和索引段的统计信息,因此如果要显示信息量将无法消化。此外,收集统计数据的目的不是为了供人类使用,而是为优化器提供所需的元数据,以便对来自对象访问和连接的基数(行计数)做出合理的良好预测,以便它可以制定良好的执行计划。它主要供 Oracle 使用,而不是我们的。
话虽如此,手动检查统计信息对于调试优化器可能为您尝试调整的某些性能不佳的 SQL 做出的错误执行计划决策很有用。在这种情况下,您可以通过查询各种视图来看到:
dba_tab_statistics
将显示表级以及分区和子分区表的统计信息。
dba_tab_col_statistics
将显示列级统计数据
dba_tab_histograms
将显示可能已为某些列收集的直方图桶。
dba_ind_statistics
将显示索引以及分区和子分区索引统计信息。
如果您喜欢以这种方式查看,其中一些数据也会加入并暴露在各种段级对象视图中(
dba_tables, dba_tab_partitions, dba_tab_subpartitions, dba_indexes, dba_ind_partitions, dba_ind_subpartitions, dba_columns/dba_tab_cols
等)