Si je vous comprends bien, vous vous attendez à ce qu'Oracle ignore les anciennes valeurs en double et n'autorise les nouvelles valeurs que lorsqu'elles satisfont à la contrainte. L'erreur est renvoyée car lorsque vous ajoutez un UNIQUE
contrainte, Oracle crée un index unique sur la colonne pour vérifier les valeurs, mais votre table contient déjà des valeurs en double, elle échoue donc. Je créerais d'abord l'index non unique, puis j'ajouterais la contrainte afin qu'il utilise votre index non unique existant au lieu de créer automatiquement l'index unique qui échouerait :
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;