【问题标题】:Oracle 12c - how to see all partitions and sub-partitions for some table and number of records for eachOracle 12c - 如何查看某些表的所有分区和子分区以及每个表的记录数
【发布时间】:2017-10-20 03:32:49
【问题描述】:

我必须探索表 't1'。

怎么看:

  • 所有分区以及哪个列用于分区
  • 所有子分区以及哪个列用于子分区
  • 每个分区的记录数和每个子分区的记录数

这是一个好的开始,但需要更多信息(上图):

select * from ALL_PART_TABLES where table_name = 't1'

谢谢。

【问题讨论】:

  • 检查 ALL_TAB_PARTITIONSALL_TAB_SUBPARTITIONS - 所有必需的列都可用。
  • 谢谢。这也是关于分区和子分区名称以及每个分区中有多少子分区的重要信息。如何查看每个分区和子分区的记录数?
  • 有一个NUM_ROWS 列可用。要了解列详细信息,您可以使用 ALL_PART_KEY_COLUMNSALL_SUBPART_KEY_COLUMNS 。参考这个链接:docs.oracle.com/cd/E11882_01/server.112/e25523/…
  • 谢谢。最后 2 个表格非常适合列详细信息。注意 - 我看到了 NUM_ROWS 列,但所有分区/子分区都显示为“null”。我是否需要运行一些分析命令或其他命令才能让此列填充实数?
  • 如果 num_rows 为空,则表示从未计算过统计信息。运行:exec dbms_stats.gather_table_stats('SCHEMA_NAME','TABLE_NAME',granularity=>'ALL');

标签: sql oracle count partitioning


【解决方案1】:

下面的查询给出了 SUBPARTITION 中的行数

select num_rows, PARTITION_NAME , SUBPARTITION_NAME 
  FROM ALL_TAB_SUBPARTITIONS
where table_name = 'yourtable';

下面的查询给出了 PARTITION 中的行数以及子分区的数量。

select num_rows, PARTITION_NAME, SUBPARTITION_COUNT     
  FROM ALL_TAB_SUBPARTITIONS
where table_name = 'yourtable';

【讨论】:

  • NUM_ROWS 列显示所有分区/子分区的“null”。我是否需要运行一些分析命令或其他命令才能让此列填充实数?
  • 您必须分析表格以显示 num_rows
  • 现在你不应该再使用ANALYZE了。请改用DBMS_STATS.GATHER_TABLE_STATS
  • @Valli - 不不不。十多年来,ANALYZE 已被弃用用于统计数据收集。始终使用 DBMS_STATS 包来收集统计信息。
猜你喜欢
  • 2019-05-11
  • 2018-03-31
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多