Quantcast
Dimanche 31 octobre 2010 7 31 /10 /Oct /2010 18:27

 

Journaliser les erreurs DML / LMD avec DBMS_ERRLOG.CREATE_ERROR_LOG.

Comment insérer des données dans une table tout en journalisant les erreurs sans bloquer le traitement ?.
En utilisant le Package DBMS_ERRLOG. La procédure CREATE_ERROR_LOG va créer une table d'Erreurs.

Il est intéressant de positionner sur un traitement batch lourd (des milliers d'insertions), une table d'erreur, afin que la journalisation permette de poursuivre le traitement sans abandon, et ainsi consigner les erreurs dans une table.

Le Package DBMS_ERRLOG s’exécute 1 seule fois pour une table, ensuite pour chaque traitement sur cette table on choisit ou non d'utiliser la journalisation d'erreurs.

 

Création de la table d'erreurs societe_errlog sur la table societe.

 

SQL > EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('societe', 'societe_errlog');

 

Insertion enregistrements déclenchant volontairement des erreurs avec journalisation.

 

SQL> INSERT INTO societe (SELECT * FROM societe)
         LOG ERRORS INTO societe_errlog ('mon_insertion') REJECT LIMIT 1000;

Cette instruction ne déclenche aucun message d'erreur, le traitement a pu se terminer.

 

Interroger la table d'erreurs societe_errlog.

 

SQL > SELECT ORA_ERR_MESG$, ORA_ERR_TAG$ FROM societe_errlog;

 

Supprimer la table d'erreurs societe_errlog.

 

SQL> DROP TABLE societe_errlog;



Par Daniel Roesch - Publié dans : PLSQL Packages
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Oracle Sql et administration

Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés