【问题标题】:User_segments not showing all the indexes in DBUser_segments 未显示数据库中的所有索引
【发布时间】:2019-01-30 06:22:04
【问题描述】:

我有一个包含 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_xxx 视图和user_xxx 视图之间的区别吗?

标签: oracle indexing


【解决方案1】:

使用DBA_SEGMENTS 而不是USER_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; 

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多