Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPILER LES OBJECTS EN ERREUR SOUS ORACLE


Information sur la source

Catégorie :Divers Classé sous : compiler, objects, erreur, oracle Niveau : Initié Date de création : 23/06/2005 Date de mise à jour : 23/06/2005 13:16:56 Vu / téléchargé: 6 393 / 181

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Pour ma première source je poste un script qui permet de compiler les objets en erreur (PACKAGE, PACKAGE BODY, VIEW, FUNCTION, TRIGGER, et PROCEDURE stocké )

Script testé uniquement sous Oracle 8I et 9I mais devrait fonctionner sous toutes les versions d'Oracle.

Une fois connecté sous un Schema spécifique exécutez le petit script si dessous.
Celui ci parcourt tous les objets du Shema en statut 'INVALIDE' et génère un script avec les commandes de compilation.

Une fois le script généré il l'exécute en affichant après chaque compilation les erreurs pouvant être survenues pendant la compilation.

Puis en fin de script, il affiche les objets qu'il n'a pas réussi à passer en mode 'VALID'

Voilà

 

Source

  • -- pour ne pas avoir de saut de page
  • SET PAGES 0
  • -- on n'affiche rien à l'écran
  • SET ECHO OFF
  • -- Le nom du script sql qui sera généré
  • SPOOL ${ORACLE_SID}_compile.sql
  • PROMPT SET ECHO ON
  • -- selection de tous les objets en status invalide
  • -- et génération de la ligne de commande pour les compiler
  • -- suivi d'un 'show error ' dans le script
  • SELECT 'alter '||
  • decode(object_type, 'PACKAGE BODY','PACKAGE',object_type) ||
  • ' '||object_name||
  • ' compile '||decode(object_type,'PACKAGE','PACKAGE', 'PACKAGE BODY','body',null)
  • ||chr(10)||'/'||chr(10)||'show errors'
  • FROM user_objects
  • WHERE object_type IN ('PACKAGE','PACKAGE BODY','VIEW', 'FUNCTION','TRIGGER','PROCEDURE')
  • AND status = 'INVALID'
  • ORDER BY decode(object_type,'VIEW',1,
  • 'FUNCTION',2,
  • 'PROCEDURE',3,
  • 'PACKAGE',4,
  • 'PACKAGE BODY',5,
  • 'TRIGGER',6,7)
  • /
  • PROMPT SET ECHO OFF
  • -- on ferme le script généré
  • SPOOL OFF
  • -- création d'un fichier log pour archivé les SHOW ERROR après chaque compilation
  • SPOOL ${ORACLE_SID}_compile.log
  • -- execution du script généré
  • @${ORACLE_SID}_compile.sql
  • SPOOL OFF
  • REM
  • -- et enfin on affiche de nouveau les objets toujours
  • -- en statu 'INVALIDE' après la compilation
  • SET PAGESIZE 500
  • TTITLE 'Invalid Objects'
  • COLUMN c format a70 HEADING 'Object_name(Object_type)'
  • SELECT object_name||'('||object_type||')' c
  • FROM user_objects
  • WHERE status='INVALID'
  • ORDER BY object_type,object_name;
-- pour ne pas avoir de saut de page
SET PAGES 0

-- on n'affiche rien à l'écran
SET ECHO OFF

-- Le nom du script sql qui sera généré
SPOOL ${ORACLE_SID}_compile.sql

PROMPT SET ECHO ON

-- selection de tous les objets en status invalide
-- et génération de la ligne de commande pour les compiler 
-- suivi d'un 'show error ' dans le script
SELECT 'alter '||
       decode(object_type, 'PACKAGE BODY','PACKAGE',object_type) ||
       ' '||object_name||
       ' compile '||decode(object_type,'PACKAGE','PACKAGE', 'PACKAGE BODY','body',null)
       ||chr(10)||'/'||chr(10)||'show errors'
 FROM user_objects
WHERE object_type IN ('PACKAGE','PACKAGE BODY','VIEW', 'FUNCTION','TRIGGER','PROCEDURE')
  AND status = 'INVALID'
ORDER BY decode(object_type,'VIEW',1,
                            'FUNCTION',2,
                            'PROCEDURE',3,
                            'PACKAGE',4,
                            'PACKAGE BODY',5,
                            'TRIGGER',6,7)
/
PROMPT SET ECHO OFF
-- on ferme le script généré
SPOOL OFF

-- création d'un fichier log pour archivé les SHOW ERROR après chaque compilation
SPOOL ${ORACLE_SID}_compile.log

-- execution du script généré
@${ORACLE_SID}_compile.sql

SPOOL OFF
REM

-- et enfin on affiche de nouveau les objets toujours 
-- en statu 'INVALIDE' après la compilation

SET PAGESIZE 500
TTITLE 'Invalid Objects'
COLUMN c format a70 HEADING 'Object_name(Object_type)'

SELECT object_name||'('||object_type||')' c 
  FROM user_objects 
 WHERE status='INVALID'
ORDER BY object_type,object_name;

Conclusion

Voilà, c'est un petit script sans prétention mais bien utile.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

23 juin 2005 13:16:56 :
N/A

Commentaires et avis

signaler à un administrateur
Commentaire de SilverGames le 24/07/2006 18:21:37

Bonjour,

Oui cela peut être utile.

Mais... as-tu déjà essayé ceci :
========

BEGIN
    DBMS_UTILITY.compile_schema(schema => 'NOM_DE_TON_SCHEMA');
END;

Cela recompile tous tes objets invalides.

@++
SilverGames.

========

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Message d'erreur lors de la génération de form par Oracle Designer [ par chryssR ] Bonjour, J'utilise une Base de Données Oracle 9i (version 9.2) et des outils de développement sur Oracle Developper Suite (version 9.0.2). Apparament erreur ora-01789 sous oracle [ par Jordan59 ] Bonjour à tous,Je rencontre une erreur sur des requêtes vers une base de données Oracle, à savoir :ORA-01789 : query Block has incorrect number of res Restauration erreur de réseau général [ par sylvie49 ] Bonjour, je restaure une base de données et une fois la restauration terminée (et OK), dès le 1er ordre sql, j'ai une sql exception :"Erreur de réseau Oracle-Hibernate - Violation de protocole :( [ par DARKSIDIOUS ] Salut les amis,J'utilise Hibernate dans un projet web J2EE avec une base oracle. J'essaye de faire une requête toute simple : récupèrer un objet de ty Problèmes d'installation sqlserver2005 sur vista [ par jado ] Salut,J'ai un problème lié a l'installation de sqlserver 2005 express sur vista, j'ai l'erreur suivante Windows Installer a rencontré une erreur inatt ORA-06502: PL/SQL erreur numérique ou erreur sur valeur [ par kharon_rp ] Marc erreur 5 sql server 2000 [ par misslonely ] bsr,j'ai un grand problème,  je suis débutante en sql server 2000,je l'ai installé et désinstallé plusieurs fois , mais ce problème persiste toujours, Connexion WINDEV ORACLE par OLEDB [ par EUREKA_05 ] Bonjour,Je dois établir une connexion entre mon application Windev et une base oracle, j'utilise donc le code suivant :MaConnexion<font color="#0000 erreur lors d'une suppression d'une donner [ par sabouha31 ] Salut, j'ai fais se code de supprimer un enregistrement de la bdd $requete= "DELETE FROM ".$_GET['table']." where IDENTIFIANT_ETUD='".$_GET['id']."'" import fichier xml dans une base de donnée oracle. [ par naceuredd ] Bonjour ,  je suis étudiant et actuellement je suis en stage . On ma demander de rentrer dans une base de données un fichier xml .je vous demande d'av


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.