domingo, 4 de diciembre de 2016

SQL: ORA-01502


 Estoy tratando de insertar 40800 registros en una tabla Oracle a partir de un archivo con sentencias INSERT, y el resultado que obtengo es el error ORA-01502.

¿Porque se produce este error?
De acuerdo al sitio dba-oracle.com, este error se produce porque se esta tratando de insertar 2 o mas veces el mismo registro.

La solución es borrar el índice  indicado en el mensaje del error
ALTER INDEX PRUEBAS.PK_FAKETABLE REBUILD;

Pero también, se debe borrar los registros repetidos del script de carga. Esto lo hice usando GVIM (las instrucciones aquí)

Error SQL: ORA-01502: index 'PRUEBAS.PK_FAKETABLE' or partition of such index is in unusable state
01502. 00000 -  "index '%s.%s' or partition of such index is in unusable state"
*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

Despues de seguir las instrucciones finalmente puedo insertar 23000 registros ya que elimine los repetidos.