ORA-04063 : table/view has errors

ORA-04063

Dans Oracle, vous pouvez généralement créer un objet même s’il y a une erreur de compilation dans la procédure ou le package. Avec une telle fonctionnalité, un utilisateur peut déployer un schéma sans corriger chaque problème d’objets invalides. Malheureusement, ce n’est pas le cas pour les vues. S’il y a une erreur de compilation dans une procédure, une fonction ou un package au sein de la vue, elle ne sera pas créée et vous rencontrerez ORA-04063.

Le problème

L’erreur ORA-04063 se produit parce que soit une tentative d’exécuter une procédure stockée a été faite, soit une tentative d’utiliser une vue qui a des erreurs a été faite.

Pour les procédures stockées, le problème peut être un problème de syntaxe ou des références à d’autres procédures qui n’existent pas.

Pour les vues, un problème possible pourrait être une référence dans la requête de définition de la vue à une table inexistante. Il peut également s’agir d’une table qui a des références à des types inexistants ou inaccessibles. Ces informations sont révélées lorsque le message est développé dans l’utilitaire oerr:

ORA-04063 : table/view has errors

Cause : Tentative d’exécution d’une procédure stockée ou d’utilisation d’une vue qui présente des erreurs. Pour les procédures stockées, le problème pourrait être des erreurs de syntaxe ou des références à d’autres procédures inexistantes. Pour les vues, le problème peut être une référence à une table inexistante dans la requête de définition de la vue. Peut également être une table qui a des références à des types inexistants ou inaccessibles.

Action : Corrigez les erreurs et/ou créez les objets référencés si nécessaire.

La solution

Pour résoudre ORA-04063, exécutez la requête PL/SQL par elle-même dans SQL*Plus. Après avoir exécuté la requête, utilisez la commande SQL*Plus « show error » pour afficher la raison de l’erreur et l’emplacement (par ligne) de l’erreur. La syntaxe de cette commande est :

SQL > show errors

Pour afficher les commentaires améliorés de la commande show errors, joignez dba_errors et dba_service pour afficher les commentaires dans les lignes du code source PL/SQL.

Vous pouvez choisir d’utiliser la commande CREATE FORCE VIEW, qui créera la vue mais la marquera comme invalide. Assurez-vous de recréer la vue après avoir exécuté cette commande.

Dans l’exemple suivant, le corps de paquet PLOG dans le schéma LM_EMPLOY n’existe pas ou présente une erreur de compilation :

ORA-04063 : le corps de paquet « LM_EMPLOY.PLOG » has errors

Dans ce cas, pour résoudre l’erreur, connectez-vous à la base de données en tant qu’utilisateur LM_EMPLOY et exécutez la commande suivante :

SQL > alter package body plog compile;

Puis utilisez la commande « show error » (SQL > show errors) pour voir quelles erreurs doivent être corrigées.

Looking Forward

Bien qu’il soit difficile d’empêcher de manière proactive de voir ORA-04063, c’est toujours une bonne pratique de vérifier deux fois la syntaxe de toutes vos commandes. Assurez-vous que les dépendances sont correctes et que toutes les variables référencées existent.

Si vous continuez à rencontrer des problèmes avec ORA-04063, vous pouvez envisager de contacter votre administrateur de base de données pour obtenir de l’aide si vous n’êtes pas le DBA du système. Une autre solution peut être de contacter un professionnel Oracle pour résoudre le problème. N’oubliez pas de toujours vérifier les références et la certification des consultants Oracle afin de vous assurer qu’ils possèdent l’expérience et l’expertise nécessaires pour vous aider à répondre à vos besoins en matière de base de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.