目录

一、索引失效

1.1 错误信息:

二、处理策略

2.1 重建索引

2.2 重建所有索引

三、总结

1、移动table的表空间后,基于该table的索引会自动失效UNUSABLE;此时访问或操作该table时,会报ORA-01502异常;

2、对于普通索引,可以通过跳过索引或重建索引来解决ORA-01502异常的问题;

3、对于唯一索引,则只能通过重建索引来解决ORA-01502异常的问题。

四、参考

4.1 创建普通索引

4.2设置 skip_unusable_indexes=true;

4.3重建索引

4.4创建唯一索引

4.5查询索引状态:


一、索引失效

1.1 错误信息:

### The error occurred while setting parameters
### SQL: insert into USER_LBL_INF( LBL_ID,LBL_NM,USERID,CRT_TM)       values(       ?,       ? ,       ? ,       ?       )
### Cause: java.sql.SQLException: ORA-01502: 索引 'BASE_PD.PK_USER_LBL_INF' 或这类索引的分区处于不可用状态

; uncategorized SQLException; SQL state [72000]; error code [1502]; ORA-01502: 索引 'BASE_PD.PK_USER_LBL_INF' 或这类索引的分区处于不可用状态
; nested exception is java.sql.SQLException: ORA-01502: 索引 'BASE_PD.PK_USER_LBL_INF' 或这类索引的分区处于不可用状态
] with root cause

java.sql.SQLException: ORA-01502: 索引 'BASE_PD.PK_USER_LBL_INF' 或这类索引的分区处于不可用状态

二、处理策略

2.1 重建索引

alter index PK_USR_CST_REL_INF rebuild;

2.2 重建所有索引

select 'alter index '||index_name||' rebuild;',s.* from dba_indexes s where owner='数据库账号' and  s.status!='VALID';

三、总结

1、移动table的表空间后,基于该table的索引会自动失效UNUSABLE;此时访问或操作该table时,会报ORA-01502异常;

2、对于普通索引,可以通过跳过索引或重建索引来解决ORA-01502异常的问题;

3、对于唯一索引,则只能通过重建索引来解决ORA-01502异常的问题。

四、参考

4.1 创建普通索引

SQL> alter index idxt unusable; 

4.2设置 skip_unusable_indexes=true;

SQL> alter session set skip_unusable_indexes=true; 

4.3重建索引

SQL> alter index idxt rebuild;

4.4创建唯一索引

SQL> create unique index idx_t on t(a);

4.5查询索引状态:

SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDXT';

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐