Jika saya mengerti Anda dengan benar, Anda mengharapkan Oracle untuk mengabaikan nilai duplikat lama dan mengizinkan nilai baru hanya ketika mereka memenuhi batasan. Kesalahan dikembalikan karena ketika Anda menambahkan UNIQUE
kendala, Oracle membuat indeks unik pada kolom untuk memeriksa nilai, tetapi tabel Anda sudah memiliki nilai duplikat, sehingga gagal. Saya akan membuat indeks non-unik terlebih dahulu, kemudian menambahkan batasan sehingga menggunakan indeks non-unik Anda yang ada alih-alih secara otomatis membuat indeks unik yang akan gagal:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;