Oracle索引或这类索引的分区处于不可用状态 查询

ORA-01502: 索引或这类索引的分区处于不可用状态

原因: 出现这个问题,可能有人move过表,或者disable 过索引。
1. alter table xxxxxx move tablespace xxxxxxx 命令后,索引就会失效。
2. alter index index_name  unusable,命令使索引失效。

解决办法:
1. 重建索引才是解决这类问题的完全的方法。
    
alter index index_name rebuild (online);

    
或者alter index index_name rebuild;
2. 如果是分区索引只需要重建那个失效的分区 。
    
alter index index_name rebuild partition partition_name
(online);

    
或者alter index index_name rebuild partition partition_name ;

3. 或者改变当前索引的名字。

说明:
1. alter session set
skip_unusable_indexes=true;就可以在session级别跳过无效索引作查询。
2. 分区索引应适用user_ind_partitions。
3. 状态分4种:
   
N/A说明这个是分区索引需要查user_ind_partitions或者user_ind_subpartitions来确定每个分区是否可用;

   
VAILD说明这个索引可用;
   
UNUSABLE说明这个索引不可用;
    USABLE
说明这个索引的分区是可用的。

4. 查询当前索引的状态:select distinct status from user_indexes;

5. 查询那个索引无效:select index_name from  user_indexes
where status <> 'VALID';

6.
详细讲解可参考:http://www.sudu.cn/info/html/edu/20071225/20526.html。

7. 批量rebuild下:select 'alter index '||index_name||' rebuild online;'
from  user_indexes where status <> 'VALID'
and index_name not like'%$$';

时间: 2024-08-02 17:09:25

Oracle索引或这类索引的分区处于不可用状态 查询的相关文章

Oracle数据库诊断案例-redo log日志组处于高激活状态

oracle|数据|数据库 平台:SunOS 5.8 Generic_108528-23 sun4u sparc SUNW,Ultra-Enterprise数据库:8.1.5.0.0症状:响应缓慢,应用请求已经无法返回登陆数据库,发现redo日志组除current外都处于active状态oracle:/oracle/oracle8>sqlplus "/ as sysdba" SQL*Plus: Release 8.1.5.0.0 - Production on Thu Jun 2

oracle点知识7——本地索引+全局索引

以下内同整理自网络: 分区索引分为本地(local index)索引和全局索引(global index). 1.本地索引: 其中本地索引又可以分为有前缀(prefix)的索引和无前缀(nonprefix)的索引.而全局索引目前只支持有前缀的索引. B*树索引和位图索引都可以分区,但是HASH索引不可以被分区.位图索引必须是本地索引(也就是说必须分区).下面就介绍本地索引以及全局索引各自的特点来说明区别: 本地索引特点: 1. 本地索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区

Oracle学习(三) 索引

在查中文字典的时候,我们之所以能够很快的查到所要查找的字是因为字典建立了索引.同样,为了 高效的获取数据,在数据量比较大的时候,我们需要给表中的某一列建立索引. 建立索引的作用是明显的,主要有: 1.快速存取数据 2.改善数据库性能,保证列值的唯一性 3.在使用order 按照存储方法可以将索引分为B*树索引和位图索引. B*树索引:顾名思义其存储类型就是一棵树,有分支和叶,分支相当于书的大目录,叶则相当于具体 的书页.Oracle用B*树机制存储索引条目,可以保证用最短路径访问键值.默认情况下

Oracle的flashback drop与索引

今天在跟朋友讨论了如下话题: <有一张表上建立索引,DROP该表,又闪回删除回来,请问,这张表上的索引还能用吗?如果有变化那是什么?> 我进行了如下测试: sys@MAA> select * from v$version; BANNER ---------------------------------------------------------------------------------------------------- Oracle Database 11g Enterp

【oracle 性能优化】组合索引查询。

在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引.组合索引的使用存在着一定的局限,只有在谓词中出现全部索引列时才能使用效率最高的index unique scan, 否则谓词中必须包含前导列,否则会走Index full scan或者FTS. SQL> create index idx_test on yangtest (object_type,object_name); 索引已创建. SQL> exec dbms_stats.gather_table_stats(user,

oracle中,索引数据定位和索引扫描有什么区别?

问题描述 oracle中,索引数据定位和索引扫描有什么区别? oracle中,索引数据定位和索引扫描有什么区别? 是不是就是简单的扫描就是要扫完,定位只要查到就可以了? 解决方案 oracle索引扫描索引扫描高手闲谈Oracle索引扫描 解决方案二: http://blog.sina.com.cn/s/blog_54eeb5d90100q9zu.html 解决方案三: 索引数据定位和索引扫描 你说的应该是索引数据定位和全表扫描吧?如果用到索引的话,没必要进行扫描,可以通过二分法快速定位

温故而知新:类索引器

类索引器  1 using System; 2 using System.Collections.Generic; 3  4 namespace Prototype 5 { 6     class Program 7     { 8         static void Main(string[] args) 9         {10             PersonContainer pc = new PersonContainer();11             pc[1] = n

聚集索引和非聚集索引

  聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序. 聚集索引确定表中数据的物理顺序.聚集索引类似于电话簿,后者按姓氏排列数据.由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引.但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样. 聚集索引对于那些经常要搜索范围值的列特别有效.使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻.例如,如果应用程序执行 的一个查询经常检索某一日期范围内的记录,则使用聚集索引可

oracle-ORACLE,多字段索引跟但字段索引的效率 会一样吗

问题描述 ORACLE,多字段索引跟但字段索引的效率 会一样吗 我有一个表AV01, 只有一个多字段索引 PK_AV01 primary key (AV1, AV2,AV3) 我查下面的语句SELECT * FROM AV01 WHERE AV1='';能用上PK_AV01这个索引 假如我的索引是只有AV1字段的, PK_AV02 primary key (AV1) 那么我用PK_AV01 做索引的效率 高还是 PK_AV02 做索引的效率高,还是说是一样的? 解决方案 可以用得上滴!!不过会比