Toto je chyba Oracle.
Spouští se přidáním sloupce s NOT NULL
omezení a DEFAULT
hodnotu do existující tabulky.
Pro rychlé přidání sloupce ukládá Oracle 11g výchozí hodnotu do datového slovníku. Oracle tomu říká „optimalizace přidání sloupců“.
Je to rychlejší než vypisování výchozí hodnoty do každého řádku tabulky. Dotazovací modul by pak měl nahradit jakoukoli hodnotu NULL v řádku tabulky výchozí hodnotou z datového slovníku. Bohužel s tím souvisí několik chyb. Zdá se, že vaše je instancí:
Můžete zkontrolovat, které sloupce byly přidány takto:
select owner, object_name, name
from dba_objects, col$
where bitand(col$.PROPERTY,1073741824)=1073741824
and object_id=obj#;
V našem případě jsme byli zasaženi jinou chybou, která vrátila nesprávné výsledky pro SELECT FOR UPDATE
.
Nastavíme parametr _add_col_optim_enabled=FALSE
tuto "optimalizaci" vypnout. Případně můžete upgradovat na novější verzi Oracle, kde jsou tyto chyby vyřešeny.
Upgrade nebo nastavení výše uvedeného parametru neopraví vaši stávající tabulku, která je poškozená. Tuto tabulku musíte znovu vytvořit.