Pokud vám rozumím správně, očekáváte, že Oracle bude ignorovat staré duplicitní hodnoty a povolí nové hodnoty pouze v případě, že splňují omezení. Chyba je vrácena, protože když přidáte UNIQUE
omezení, Oracle vytvoří jedinečný index ve sloupci pro kontrolu hodnot, ale vaše tabulka již má duplicitní hodnoty, takže selže. Nejprve bych vytvořil nejedinečný index a poté přidal omezení tak, aby používal váš stávající nejedinečný index namísto automatického vytváření jedinečného indexu, který by selhal:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;