oracle - 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';
解决方案
使用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;