Potentiellement, cela est une base de données corrompue, mais ne soyez pas trop pressé. Des erreurs récursives peuvent se produire lorsque les limites de session et de processus sont dépassées.
Il y a une faible chance que vous ayez dépassé la limite de processus. Combien de processus avez-vous actuellement dans votre instance? Êtes-vous proche de la limite imposée par le paramètre "processus"? Si c'est le cas, SQL récursif pourrait échouer et présenter l'erreur.
Vérifier le paramètre processus de la session sqlplus (ou IDE) avec:
show parameter processes
vérifier ensuite nombre de processus de v $ process:
select count(*) from v$process
Êtes-vous proche du seuil? Si vous êtes, augmentez le paramètre des processus: par exemple si votre processus limite était de 150 augmentation de 175
alter system set processes=175 scope=spfile
Vous devrez redémarrer le serveur pour que la modification prenne effet que vous ne pouvez pas modifier dynamiquement le paramètre processus.
Sinon, tracer la session et voir où le problème est en fait:
À partir de votre numéro actuel de la session qui suit:
alter session set sql_trace=TRUE
Ensuite, exécutez votre create or replace again
, quand il les bombes donnent à votre fichier de trace créé dans le répertoire USER_DUMP_DEST.Rechercher des erreurs ORA là-bas, ils peuvent conduire à un problème différent, mais cela peut économiser beaucoup de temps.
Essayez-vous de créer/supprimer des objets dans votre propre schéma ou dans celui d'un autre? Quelle est la syntaxe exacte que vous utilisez en abandonnant la procédure ci-dessus? –
Je suis connecté en tant que sysdba (j'obtiens la même erreur si je me connecte comme eag), et j'ai utilisé cette syntaxe exacte pour créer la procédure. – climbage
Et vous obtenez l'erreur alors avec 'DROP PROCEDURE EAG.TEST' si vous êtes connecté en tant que' SYS as sysdba' ou 'EAG'? –