Nie mam pojęcia, dlaczego pojawia się błąd synonimu. Ale to dużo kodu jak na coś, co powinno być pojedynczą instrukcją DELETE. Zakładam, że zmieniłeś go na commit-every-n, aby uniknąć błędów wycofywania. Byłoby miło, gdybyś mógł uzyskać DBA, aby zwiększyć przestrzeń cofania, dzięki czemu możesz faktycznie wykonać pracę, którą musisz wykonać. Jeśli to się nie uda, myślę, że nadal możesz to znacznie uprościć:
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;
I jeśli chcesz, możesz to objąć swoją logiką ponawiania.
Przepraszam, jeśli przegapiłem jakąś subtelność, która odróżnia to od tego, co robisz.