Este es un error de Oracle.
Se activa al agregar una columna con NOT NULL
restricción y un DEFAULT
valor a una tabla existente.
Para agregar la columna rápidamente, Oracle 11g almacena el valor predeterminado en el diccionario de datos. Oracle llama a esto "añadir optimización de columna".
Esto es más rápido que escribir el valor predeterminado en cada fila de la tabla. Se supone que el motor de consultas debe reemplazar cualquier NULL en la fila de la tabla con el valor predeterminado del diccionario de datos. Desafortunadamente, hay varios errores relacionados con esto. El tuyo parece ser una instancia de:
Puede verificar qué columnas se han agregado así:
select owner, object_name, name
from dba_objects, col$
where bitand(col$.PROPERTY,1073741824)=1073741824
and object_id=obj#;
En nuestro caso, nos picó un error diferente que devolvió resultados incorrectos para SELECT FOR UPDATE
.
Establecemos el parámetro _add_col_optim_enabled=FALSE
para desactivar esta "optimización". Alternativamente, puede actualizar a una versión posterior de Oracle donde se resuelvan estos errores.
Actualizar o configurar el parámetro anterior no arreglará su tabla existente, que está corrupta. Debe volver a crear esa tabla.