Нямам представа защо получавате грешката за синоним. Но това е много код за нещо, което трябва да бъде единична команда DELETE. Предполагам, че сте го променили на commit-every-n, за да избегнете грешки при връщане назад. Би било хубаво, ако можете да накарате вашия DBA да увеличи пространството за отмяна, за да можете действително да вършите работата, която трябва да вършите. Ако не успеете, мисля, че все още можете да го направите много по-просто:
LOOP
DELETE FROM log_master
WHERE last_changed_date < :purge_date
AND event_id = :event_id
AND rownum <= :batch_delete_limit
USING purge_date, event_id, l_bulk_collect_limit;
EXIT WHEN SQL%NOTFOUND;
END LOOP;
И можете да обхванете логиката си за повторен опит около това, ако искате.
Извинявам се, ако съм пропуснал някоя тънкост, която прави това различно от това, което правите.