Очевидно, что это очень загруженный стол. 15 миллионов строк в день означает около 10416 строк в минуту, что означает, что в то время, когда вы удаляете эти строки, вставляются тысячи записей. Пока Oracle пытается удалить старые строки и обновить индекс CREATED, добавляются и фиксируются другие строки.
Я вижу, вы пытаетесь УДАЛИТЬ 10000 строк за раз. Я предполагаю, что вы совершаете фиксацию после этих 10000 строк, поэтому следующий подход может быть немного быстрее, потому что SELECT выполняется только один раз, и вы не повторно просматриваете 1500 раз занятую таблицу ...
declare
cursor c_rowids is
SELECT T.ROWID
FROM SIEBEL.CX_AUDIT_SEARCH T
WHERE CREATED < '20-MAy-2020';
type t_tbl_rowids is table of rowid;
tbl_rowids t_tbl_rowids;
begin
open c_rowids;
Loop
fetch c_rowids bulk collect into tbl_rowids limit 10000;
exit when tbl_rowids.count = 0;
forall i in 1..tbl_rowids.count
DELETE FROM SIEBEL.CX_AUDIT_SEARCH
WHERE ROWID = tbl_rowids(i);
COMMIT;
End loop;
close c_rowids;
end;