-
Compiler mes procédures
Bonjour,
Bon voilà, j'ai un problème gênant avec ma base car dès que j'essaye de compiler une procédure ou un package, il me bloque ainsi que les utilisateurs sans possibilité de killer les sessions et je suis obligé de redémarrer ma base. J'ai comme l'impression d'avoir un paramètre lock ou verrou qui m'empêche d'aller plus loin. Par ailleurs, je suppose avoir faire un grant database any ou grant all et bien qu'ayant révoqué ces grants, ça rame toujours comme si ma base était HS.
D'avance merci pour vos réponses qui seront les bienvenues.
Thomas
-
bonsoir
on a besoin de plus d'informations.
tout le monde a le droit de compiler n'importe quelle procédure sur votre base?
c'est dans un esprit de rendre les choses très faciles que ce grant a été fait?
ça rendra aussi facile de casser la base à la racine.
pouvez-vous nous expliquer un peu le contexte de cet objectif de compiler des procédures de n'importe qui? les objets de sys sont-ils inclus?
le blocage se manifeste comment? avec quel user agissez vous sur quel objet (own shema ou pas? action sur objets de sys?)
quel est l'état de santé de votre base?
que donne le select * sur dba_registry?
-
Bonjour et merci à vous de m'avoir répondu,
En fait la procédure étant une procédure faisant partie d'une application interne donc à priori ça ne pose pas de problème d'autant que je me suis connecté sous le compte du user en question et à priori les objets de sys ne sont pas concernés.
Quand au Grant, je l'avais fait pour résoudre un problème avec dbms_utility puis je l'avais révoqué mais en effet c'était pour faciliter certaines choses sur ma base, l'ayant fait sous le user sys.
En fait, concernant mon problème de blocage, il s'agit d'un package interne (voire même il peut s'agir de reconstruire un indexe, ça bloque également et c'est long) quand je le charge par "load procedure editor" et dès que je veux compile les déclarations, ça plante tout sachant que je le fais sous le propre user (ou schema).
Pour terminer, j'ai essayé votre requête sur dba_registry et il me répond que la table n'existe pas que ce soit en sys, en dba ou en manager.
PS: le shutdown immediate ne fonctionne plus, je suis obligé d'utiliser shutdown abort.
-
bien, alors loggué as sysdba, peut-être serait-il bon de passer catalog et catproc.
ceci fait recompiler les objets invalides avec utlrp.
-
Bonjour,
C'est ce que j'ai fait plusieurs fois et je me demande si j'ai pas loupé quelque chose à un moment donné (je pense à caths, catexp7 ou autre). De plus à force d'utiliser ces procédures, je perds mes outils liés aux logiciels genre dblinks, synonymes ou certains packages ou triggers sont à recompiler. Au pire je recommence demain mais c'est la dernière fois.
-
Bonjour,
Pardon pour ma réponse tardive car finalement j'ai réussi à solutionner mon problème en exécutant des procédures qui n'avaient probablement pas été exécutées (ou oubliées) lors de la récupération. A savoir dans l'ordre:
catalog.sql
catexp7.sql
catproc.sql
caths.sql
pupbld.sql
utlsampl.sql
Comme quoi récupérer une base à froid ne suffit pas, il vaut mieux respecter l'ordre de la procédure. Et depuis mes utilisateurs peuvent enfin bosser ! :roll: