Oracle数据表字段varchar2改为clob导致索引失效

场景

上周开发过程中,将Oracle数据库中某个表字段从varchar2改为clob后(修改前也将该字段的值清空了),但是在往该表insert数据时报错:

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

分析

查看索引状态

-- 查看这张表的索引状态  
select index_name, status from user_indexes where table_name='xxx'; 

-- 查询结果:有三个索引,其中有两个都失效了。    
INDEX_NAME                 STATUS
------------------------- --------
SYS_IL0000013716C00001$$   VALID
IDX_PRIMARY_KEY            UNUSABLE
IDX_USER_NAME              UNUSABLE

如上得知这张表中的两个索引IDX_PRIMARY_KEYIDX_USER_NAME都失效了——UNUSABLE
并且多了一个奇怪的索引‘SYS_IL0000013716C00001$$’ ,这个索引是Oracle自动建的——Oracle会为clob类型的字段自动添加索引。

oracle索引的状态:
VALID:当前索引有效
N/A :分区索引 有效
UNUSABLE:索引失效

解决

将索引重建即可

# alter index [index_name] rebuild;
alter index IDX_PRIMARY_KEY rebuild;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值