Je ne sais pas pourquoi vous obtenez l'erreur de synonyme. Mais c'est beaucoup de code pour quelque chose qui devrait être une seule instruction DELETE. Je suppose que vous l'avez changé en commit-every-n pour éviter les erreurs de restauration. Ce serait bien si vous pouviez demander à votre DBA d'augmenter l'espace d'annulation afin que vous puissiez réellement faire le travail que vous devez faire. A défaut, je pense que vous pouvez encore faire beaucoup plus simple :
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;
Et vous pouvez jeter votre logique de nouvelle tentative autour de cela si vous le souhaitez.
Toutes mes excuses si j'ai raté une subtilité qui rend cela différent de ce que vous faites.