How can we drop a constraint without losing the automatically created index?
Use KEEP INDEX.

drop table demo purge;
create table demo (id number, constraint demo_pk primary key (id));
alter table demo drop constraint demo_pk keep index;
select index_name from user_indexes where table_name = 'DEMO';

INDEX_NAME
------------------------------
DEMO_PK