Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-01775 :chaîne de synonymes en boucle mais il n'y a pas de synonymes

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.