IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

recompiler les procs grace à du SQL?


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Par défaut recompiler les procs grace à du SQL?
    bonjour à tous,

    je suis regulierement amené à recompiler des procedures stockées dans divers schémas sur des instances differentes suites à des mises à jour de base de données.

    j'aurais voulu "automatiser" ça au maximum. hum je vous previens que je suis plutot une bille en SQL mais je ne demande qu'a m'ameliorer.

    Je pensais faire une 1ere requete qui remonte les noms et schémas de ces procedures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select object_name, owner, status
     from dba_objects
      where object_type='PROCEDURE'
      and owner='TOTO'
    (question : comment faire pour ajouter un autre owner? j'ai tenté 'TOTO,TITI' mais ca ne marche pas)

    cette requete renverrais les resutats pour passer un ordre SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter procedure "RESULTAT DE LA REQUETE #1" compile;
    dois-je faire une procedure?

    comment faire pour la 2e requete?

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Par défaut
    un truc dans ce genre là :

    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
    set echo off
    set heading off
    set feedback off
     
    set term off
    spool procs_recompile.tmp
     
    SELECT 'set echo on' FROM dual;
    SELECT 'set feedback on' FROM dual;
     
    SELECT 
       'alter procedure '||object_name||' compile;'
    FROM 
       dba_objects
    WHERE 
       contents not in ('TEMPORARY','UNDO';'SYS';'SYSTEM');
     
    spool off
    set term on
     
    @procs_recompile.tmp

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Si vous pouvez avoir les droits SYSDBA, le plus simple est d'utiliser le script <ORACLE_HOME>/rdbms/admin/utlrp.sql qui va recompiler tous les objets (procédures, fonctions, packages, triggers, vues, etc) dans tous les schémas de la base.

    Toujours avec les droits SYSDBA, vous pouvez compiler par schéma avec le package UTL_RECOMP.

    Sinon DBMS_UTILITY.COMPILE_SCHEMA peut être utilisé sans les droits SYSDBA. Attention en cas de dépendances inter schémas, il faut compiler dans le bon ordre sous peine d'avoir des objets invalides à répétition: il faut commencer par compiler les objets qui n'utilisent aucun autre objet à compiler (niveau 0), puis les objets qui utilisent le niveau 0, etc.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Par défaut
    Citation Envoyé par pifor Voir le message
    Sinon DBMS_UTILITY.COMPILE_SCHEMA peut être utilisé sans les droits SYSDBA. Attention en cas de dépendances inter schémas, il faut compiler dans le bon ordre sous peine d'avoir des objets invalides à répétition: il faut commencer par compiler les objets qui ne sont utilisés par aucun autre objet (niveau 0), puis les objets qui utilisent le niveau 0, etc.
    Juste un lapsus d'écriture : tu voulais dire qui n'utilisent aucun autre objet ...

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 72
    Par défaut
    bonjour et merci pour votre reponse,

    J'ai déjà tenté d'utiliser le script utlrp.sql, en revenche je n'avais pas noté qu'il fallait l'utiliser avec les droits sysdba.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Lister les Bases de données (SQL SERVER) d'un poste
    Par justice007 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 21/06/2010, 16h10
  2. executer les proc sql en java
    Par bicho dans le forum JDBC
    Réponses: 1
    Dernier message: 16/05/2007, 16h25
  3. [Oracle 10.2][PL/SQL] Recompiler les index
    Par Bahan dans le forum Administration
    Réponses: 1
    Dernier message: 16/04/2007, 18h44
  4. Recuperer les erreurs des requetes sql en asp
    Par emile13 dans le forum ASP
    Réponses: 3
    Dernier message: 01/04/2004, 13h49
  5. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo