我有一个数据库,其中有100多个DB表,并为其中的30个表创建了索引。这在表“ user_indexes”或“ dba_ind_columns”中正确显示,但是当我检查“ user_segments”表时,我仅看到5个索引。请让我知道其原因以及解决方法。
这显示了我在数据库中的所有索引,大约。 30:
SELECT DISTINCT TABLE_NAME, INDEX_NAME
FROM DBA_IND_COLUMNS;
这也显示了数据库中的所有索引:
SELECT DISTINCT INDEX_NAME
FROM USER_INDEXES;
这仅显示数据库中的5个索引
SELECT SEGMENT_NAME
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'INDEX';
答案 0 :(得分:0)
使用DBA_SEGMENTS
而不是USER_SEGMENTS
不仅可以查看当前架构中的细分,还可以查看所有数据库中的细分,并将PARTITIONS
和SUBPARTITIONS
的视图包括到列表中为:
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;