Se ho capito correttamente, ti aspetti che Oracle ignori i vecchi valori duplicati e consenta i nuovi valori solo quando soddisfano il vincolo. L'errore viene restituito perché quando aggiungi un UNIQUE
vincolo, Oracle crea un indice univoco sulla colonna per controllare i valori, ma la tabella ha già valori duplicati, quindi non riesce. Vorrei prima creare l'indice non univoco, quindi aggiungere il vincolo in modo che utilizzi il tuo indice non univoco esistente invece di creare automaticamente l'indice univoco che fallirebbe:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;