Nechápu, proč se vám zobrazuje chyba synonym. Ale to je hodně kódu pro něco, co by mělo být jedním příkazem DELETE. Předpokládám, že jste to změnili na commit-every-n, abyste se vyhnuli chybám vrácení. Bylo by hezké, kdybyste mohli přimět svůj DBA ke zvětšení prostoru pro vrácení zpět, abyste mohli skutečně dělat práci, kterou musíte udělat. Pokud se tak nestane, myslím, že to můžete ještě mnohem zjednodušit:
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;
A pokud chcete, můžete to obejít logikou opakování.
Omlouvám se, pokud jsem přehlédl nějakou jemnost, která to odlišuje od toho, co děláte.