Bonjour,
Existe t'il une requête pouvant fournir la liste des objets qui doivent être recompiler après un import car j'ai constaté que d'autres objets que ceux en erreur dans la log étaient en erreur après l'import.
Merci par avance.
Bonjour,
Existe t'il une requête pouvant fournir la liste des objets qui doivent être recompiler après un import car j'ai constaté que d'autres objets que ceux en erreur dans la log étaient en erreur après l'import.
Merci par avance.

J'utilise ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select object_name NOM_OBJ , object_type TYP_OBJ from user_objects where status = 'INVALID' ;
sinon, lance tout simplement utlrp.sql dans ORACLE_HOME\rdbms\admin

J'avais lu une documentation mettant en garde sur l'utilisation de ce script. (en gros, il était demandé de faire une sauvegarde avant de le lancer et que ça pouvait causer des problèmes dans SYS) C'est assez ancien alors je pense que je devais être en 8i. Est-ce que c'est toujours le cas ou pas, est-ce que mon cerveau malade a déformé une information ? Ou une légende urbaine oracléenne qui traine ?
Merci pour vos réponses.
Je vais utiliser cette requête qui répond à ma demande :Pouvez vous m'indiquer ce que fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT object_name NOM_OBJ , object_type TYP_OBJ FROM dba_objects WHERE STATUS = 'INVALID' ;Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part utlrp.sql
Le script utlrp va recompiler tous les objets invalides dans tous les schémas de la base (avec une connexion SYSDBA). Je ne sais pas s'il y a des problèmes particuliers avec Oracle 8i. En tout cas pour toute version Oracle, il faut quand même savoir que s'il y a des transactions en cours qui utilisent des packages PL/SQL avec des variables de session, et qui référencent d'autres packages qui ont été recompilés, alors des transactions auront les erreurs suivantes:
C'est uniquement un problème si l'application ne sait pas récupérer correctement des erreurs inattendues, ce qui arrive encoreORA-04061: existing state of string has been invalidated
Cause: Attempt to resume the execution of a stored procedure using the existing state which has become invalid or inconsistent with the stored procedure because the procedure has been altered or dropped.
Action: Try again; this error should have caused the existing state of all packages to be re-initialized.
ORA-04065: not executed, altered or dropped string
Cause: Attempt to execute a stored procedure that has been altered or dropped thus making it not callable from the calling procedure.
Action: Recompile its dependents.![]()

Tout est dit dans le fichier :
Merci pifor pour les infos, désormais j'utiliserais le script oracle sans soucis !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Rem NAME Rem utlrp.sql - Recompile invalid objects Rem Rem DESCRIPTION Rem This script recompiles invalid objects in the database. Rem Rem When run as one of the last steps during upgrade or downgrade, Rem this script will validate all remaining invalid objects. It will Rem also run a component validation procedure for each component in Rem the database. See the README notes for your current release and Rem the Oracle Database Upgrade book for more information about Rem using utlrp.sql Rem Rem Although invalid objects are automatically re-validated when used, Rem it is useful to run this script after an upgrade or downgrade and Rem after applying a patch. This minimizes latencies caused by Rem on-demand recompilation. Oracle strongly recommends running this Rem script after upgrades, downgrades and patches. Rem Rem NOTES Rem * This script must be run using SQL*PLUS. Rem * You must be connected AS SYSDBA to run this script. Rem * There should be no other DDL on the database while running the Rem script. Not following this recommendation may lead to deadlocks.
Partager