Menu Close

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

参考:https://www.cnblogs.com/lijiaman/p/9277149.html

1. 问题

C#代码使用OracleBulkCopy时插入了相同主键的数据,导致索引失效。

SELECT index_name,index_type,tablespace_name,table_type,status
  FROM user_indexes
 WHERE index_name='PK_AM_ACCOUNT_PHOTO';

重建索引时,提示找到重复的关键字。

ALTER INDEX PK_AM_ACCOUNT_PHOTO REBUILD;

2. 分析过程

2.1. 报错问题原因

 ~]$ oerr ora 01502
01502, 00000, "index '%s.%s' or partition of such index is in unusable state"
// MERGE: 1489 RENUMBERED TO 1502
// *Cause: An attempt has been made to access an index or index partition
//         that has been marked unusable by a direct load or by a DDL
//         operation
// *Action: DROP the specified index, or REBUILD the specified index, or
//         REBUILD the unusable index partition

2.2. 下列操作会导致索引失效

3. 解决方案

先删除该索引,再将重复的记录找到并删除,再重建该索引。

ALTER TABLE am_account_photo DROP CONSTRAINTS PK_AM_ACCOUNT_PHOTO;