Les erreurs les plus couramment rencontrées
Introduction
Les erreurs Oracle d’accès aux données sont au format ORA-nnnnn. Il en existe plusieurs milliers. Dans ce chapitre seront évoquées quelques erreurs les plus couramment rencontrées.
D’autres erreurs Oracle existent et sont classées par types de demande. Par exemple, les erreurs spécifiques au PL/SQL seront notées PLS-nnnnn, les erreurs liées aux sauvegardes seront notées RMAN-nnnnn, les erreurs de chargement avec SQL*Loader seront notées SQL*LOADERnnnnn, etc.
Vous trouverez sur Internet des sites répertoriant l’ensemble des erreurs existantes. En voici quelques-uns :
Sur les accès aux données (LDD/LMD)
Code de l’anomalie |
Message Oracle |
Cause de l’anomalie |
Solution |
ORA-00001 |
unique constraint (string.string) violated |
Un UPDATE ou un INSERT provoque une clé dupliquée. |
Supprimez la contrainte UNIQUE sur la clé, ou corrigez l’INSERT ou l’UPDATE. |
ORA-00051 |
timeout occurred while waiting for a resource |
Dépassement de délai lors du lancement d’une commande. Une ligne dans une table est réservée par un autre utilisateur et, passé un certain délai d’attente, Oracle ramène cette erreur. |
Relancez la commande plus tard. |
ORA-00054 |
resource busy and acquire with NOWAIT specified |
La table ou les lignes auxquelles on souhaite accéder sont réservées (lockées - vocabulaire informatique) par un autre utilisateur et le paramètre NOWAIT est activé. Cela signifie que Oracle n’attend pas dans ce cas. |
Réessayez la commande après avoir attendu quelques minutes ou enlevez le paramètre NOWAIT pour qu’Oracle attende la libération de la ressource. |
ORA-00060 |
deadlock detected while waiting for resource |
Vous essayez de mettre à jour une ligne qui est également mise à jour par une autre session utilisateur. |
Il faut que l’une ou l’autre des sessions réalise un ROLLBACK ou un COMMIT pour libérer la ressource. |
ORA-00100 |
no data found |
Aucune ligne n’est ramenée par le SELECT demandé. |
Vérifiez la clause WHERE et les données de la table. |
ORA-00900 |
invalid SQL statement |
La syntaxe de votre requête ou de votre procédure stockée n’est pas correcte. |
Corrigez la syntaxe, vérifiez notamment le format des dates, par rapport à la variable NLS_DATE_FORMAT déclarée dans la base. |
ORA-00900 |
to ORA-01499 3-7statement. ORDER BY cannot be used to create an ordered view or to insert in acertain order. |
L’ordre SQL ORDER BY n’est pas possible avec un CREATE VIEW or INSERT. |
Vérifiez la syntaxe de l’ordre demandé. |
ORA-00901 |
invalid CREATE command |
La commande CREATE n’a pas la bonne syntaxe. |
Corrigez la syntaxe. |
ORA-00902 |
invalid datatype |
Lors de la création ou de la modification d’une table, vous n’avez pas utilisé un type de colonne Oracle connu. |
Vérifiez les formats attribués... |
Sur les transactions et les sessions (TCL/DCL)
Code de l’anomalie |
Message Oracle |
Cause de l’anomalie |
Solution |
ORA-00018 |
maximum number of sessions exceeded |
Dépassement du nombre de sessions possibles. |
Augmentez la valeur du nombre de sessions maximum : paramètre SESSIONS ALTER system SET SESSIONS=250 scope=spfile; |
ORA-00019 |
maximum number of session licenses exceeded |
Toutes les licences sont utilisées. |
Augmentez la valeur du nombre de sessions maximum : paramètre LICENSE_ MAX_SESSIONS. |
ORA-00021 |
session attached to some other processcannot switch session |
Une session utilisateur est utilisée par un autre utilisateur. |
Contrôlez les sessions actives. |
ORA-00022 |
invalid session ID- access denied |
La session n’existe pas ou vous n’avez pas les droits pour l’utiliser. |
Utilisez une session valide ou vérifiez les droits utilisateurs. |
ORA-00025 |
failed to allocate string |
Manque de mémoire pour une chaîne de caractères. |
Augmentez la taille mémoire de la SGA. |
ORA-00026 |
missing or invalid session ID |
La commande ALTER SYSTEM KILL SESSION indique que l’ID n’existe pas ou n’est pas présent. |
Relancez la commande avec un ID valide. |
ORA-00027 |
cannot kill current session |
Impossible de tuer la session courante. |
Utilisez un autre utilisateur pour tuer la session souhaitée. |
ORA-00028 |
your session has been killed |
Votre session a été tuée par un autre utilisateur. |
Reconnectez-vous. |
ORA-00029 |
session is not a user... |
Sur les composants internes (mémoire, système)
Code de l’anomalie |
Message Oracle |
Cause de l’anomalie |
Solution |
ORA-00058 |
DB_BLOCK_SIZE must be string to mount this database (not string) |
La valeur indiquée pour le paramètre DB_BLOCK_SIZE lors du démarrage de la base n’est pas celui qui a servi lors de la création de la base. |
Corrigez le paramètre DB_BLOCK_SIZE. |
ORA-00059 |
maximum number of DB_FILES exceeded |
Le nombre de fichiers physiques maximum (DB_FILES) contenant les données de la base est dépassé. |
Incrémentez le paramètre DB_FILES et redémarrez la base. |
ORA-00063 |
maximum number of LOG_FILES exceeded |
Le nombre de fichiers journaux (log) maximum est dépassé. |
Incrémentez le paramètre LOG_FILES. |
ORA-00065 |
initialization of FIXED_DATE failed |
La variable FIXED_DATE qui est la date système Oracle n’est pas au format date (yyyy-mm-dd:hh24:mi:ss). |
Modifiez le paramètre pour le mettre au bon format et relancez la base. |
ORA-00483 |
During shutdown a process abnormally terminated |
Lors de l’arrêt de la base, un processus s’est mal terminé. |
Vérifiez les logs pour détecter quel processus est concerné. |