首页 > 解决方案 > User_segments 未显示数据库中的所有索引

问题描述

我有一个包含 100 多个数据库表的数据库,并为其中大约 30 个表创建了索引。这在“user_indexes”或“dba_ind_columns”表中正确显示,但当我检查“user_segments”表时,我只看到 5 个索引。请让我知道这个问题的原因以及如何解决这个问题。

这显示了我在数据库中的所有索引,大约。30:

SELECT DISTINCT TABLE_NAME, INDEX_NAME 
FROM DBA_IND_COLUMNS;

这也显示了 DB 中的所有索引:

SELECT DISTINCT INDEX_NAME 
FROM USER_INDEXES;

这仅显示数据库中的 5 个索引

SELECT SEGMENT_NAME 
FROM USER_SEGMENTS 
WHERE SEGMENT_TYPE = 'INDEX';

标签: oracleindexing

解决方案


使用DBA_SEGMENTSUSER_SEGMENTS不是不仅可以查看当前架构中的段,还可以查看所有数据库,并将列表的视图包括PARTITIONSSUBPARTITIONS

SELECT OWNER, SEGMENT_NAME 
  FROM DBA_SEGMENTS 
 WHERE SEGMENT_TYPE = 'INDEX'
 ORDER BY OWNER, SEGMENT_NAME;

SELECT INDEX_OWNER, INDEX_NAME
  FROM DBA_IND_PARTITIONS 
 GROUP BY INDEX_OWNER, INDEX_NAME 
 ORDER BY INDEX_OWNER, INDEX_NAME; 

SELECT INDEX_OWNER, INDEX_NAME
  FROM DBA_IND_SUBPARTITIONS 
 GROUP BY INDEX_OWNER, INDEX_NAME 
 ORDER BY INDEX_OWNER, INDEX_NAME; 

推荐阅读