Я думаю, что это немного сложно сделать с помощью запроса на удаление. Может быть, это нормально для вас, чтобы сначала иметь такой запрос выбора:
select A,B from (
select A,
B,
ROW_NUMBER() over (PARTITION BY ORA_HASH(A) * ORA_HASH(B) ORDER BY A) as RANK
FROM <your_table_name>
) where RANK = 1;
Вы можете сохранить результат этого запроса в виде новой таблицы с помощью CREATE TABLE AS SELECT ...
И затем вы просто УДАЛИТЕ свою старую таблицу.