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 :

recompilation automatique packages


Sujet :

Administration Oracle

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut recompilation automatique packages
    Bonjour a tous,

    oracle 9i
    rhel 4

    Dans l'environnement dans lequel je bosse, il existe une centaines de tables et une dizaine de materialized view...et aussi plein de packages PL/SQL (j'ai pas fait le comte).
    Le probleme est le suivant...Chaque matin les DBA du client m'envoient un fichier avec la liste des object DECOMPILÉS et qui doivent etre recompilés.
    Donc chaque matin je regarde dans dba_object et je recompile 1 a 1...
    Je voudrais automatiser ca, est possible de faire un script qui jette un oeil et recompil ce qui est decompilé??
    D'avance merci

  2. #2
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    voici un script qui peut te convenir mais avec un peu de recherche tu l'aurais trouvé sur ce site.
    Fichiers attachés Fichiers attachés
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut script de recompilation
    Salut
    merci pour ton aide...
    Ca marche pour la 9i ? j'ai eu quelques erreurs du type:
    table or view do not exists...

  4. #4
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    A vrai dire je n'ai jamais tester sur une 9i mais tu peux facilement vérifier dans le script si les tables existent dans ta base.
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  5. #5
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut compilation automatique package
    Re bonjour,
    a vrai dire, j'avais pensé faire un trigger dans ce style la:
    J'ai pensé a un trigger, car c'est souvent apres une modif sur une table (a partir de laquelle sont crés les view et les packages) que les objects se decompile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE or REPLACE TRIGGER check_invalid
           AFTER CREATE on verde.schema
           DECLARE
            v_invalid_count NUMBER(3) :=0;
           BEGIN
    	   select count(*) into v_invalid_count from user_objects
    	   where status ='INVALID';
    	   print v_invalid_count;
    	   IF v_invalid_count>=1 THEN
    			EXEC DBMS_UTILITY.compile_schema(schema => 'verde');
    	   v_invalid_count := 0;
    		END IF;
           END;
           /
    Ce code ne marche pas...mias ca serait l'idée.
    Est il possible d'ajouter que le trigger se declenche pas seulement si y'a un create mais aussi si y'a un alter ou un update?
    Merci d'avance

  6. #6
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Trigger = difficulté de maintenance


    pourquoi ne pas faire un job , cron ,schedule ,dmbs_job, dbms_scheduler ....

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Bonjour

    La première chose serait de savoir pourquoi vous avez régulièrement des objets invalides. Ce n'est a priori pas normal, et c'est plutôt là qu'il faut agir.

    La deuxième : en quoi ces objets invalides vous posent-ils des problèmes concrets ? Oracle recompile automatiquement les objets invalides dès que vous y faites appel.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut compilation automatique package
    Bonjour a tous,

    et bien ... le fait que oracle recompile tout seul c'est valable avec oracle 9i?
    Voici comment ceci arrive.
    Nous travaillons sur le developpement d'applications web en .NET
    Les developpeurs utilisent du code PL/SQL pour extraire les données.
    Chaque jour, ils "montent" au serveur des packages modifiés...et les packages pointent vers des view et mat view crées a partir des tables de base...
    A partir de ces infos, je sais pas trop pourquoi des objets se decompile, j'ai pas acces aux log non plus (la poisse).
    Je suppose que les developpeurs avec leurs modifs, change la structure des objects... Tous les matins je reçois un mail avec la liste des objects decompilés, ce sont souvent les materialized view.

    Voila pourquoi je voulais automatiser al recompil de ses objects.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Il y a le package utlrp.sql installé avec Oracle qui recompile tous les objets invalides de ta base (généralement sous Unix il est sous $ORACLE_HOME/rdbms/admin).

    Après ça, une requête du type : select owner,object_name,object_type from dba_objects where status='INVALID'; pour savoir si il reste des objets invalides.

    Par contre, si les objets invalides sont souvent des vues matérialisées, j'essayerais de revoir comment celles-ci sont rafraîchies.
    MrJéjé
    Directeur du recrutement de Gourous & riCo .

  10. #10
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut compilation automatique package
    Salut a tous

    oui justement ce sont toujours des materialized view... J'ai demandé le log d'hier mais j'ai rien vue..aucune erreur. Je connais pas ce monde des mat view...Par quoi je dois commencer pour detecter le problem?

    Voici le code d'une qui etait INVALID ce matin par exemple:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    CREATE TABLE VRHU_MAT_NOM
    (
     ICI les camps avec les types 
    )
    TABLESPACE TBS
    PCTUSED    40
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       2147483645
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    LOGGING 
    NOCACHE
    NOPARALLEL
    NOMONITORING;
     
    COMMENT ON TABLE LATABLE IS 'snapshot table for snapshot';
     
    CREATE INDEX IDX_MAT_PERFILOPCION_IDPERFIL ON TABLE
    (IDL)
    LOGGING
    TABLESPACE TBS
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       2147483645
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX IDX_xx ON TABLE
    (ID)
    LOGGING
    TABLESPACE TBS
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       2147483645
                PCTINCREASE      0
                FREELISTS        1
                FREELIST GROUPS  1
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
    Dans ce code y'a aucune info de refresh etc... ca pourrait etre ca le probleme?
    Qqu'un connait les causes de decompilations d'un mat view? c'est lorsque la table maitresse change apres un update par exemple? a ce moment la il faut faire un refresh et s'il ne se fait pas la mat view se met invalid?

    D'avance merci

  11. #11
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    bonjour,

    c'est le script de création de la table que tu nous a mis et non celui de la vue matérialisée.
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Le problème vient plutôt du fait que tu utilises Toad et que pour regarder le script de création de ta vue tu es sur l'onglet table au lieu de l'onglet Materialized Views. Logiquement ton ordre commence par :

    Create materialized view xxxx
    [paramètres de ta vue dont Refresh]
    as
    select [...]
    ;
    MrJéjé
    Directeur du recrutement de Gourous & riCo .

  13. #13
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut materialized view compilation
    Bonjour,

    haaa ok
    alors si je change d'onglet j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE MATERIALIZED VIEW NOM 
    TABLESPACE TBS
    NOCACHE
    LOGGING
    NOPARALLEL
    BUILD IMMEDIATE
    REFRESH FORCE ON DEMAND
    WITH PRIMARY KEY
    AS 
    SELECT A.*, TABLE 
     FROM
    Mmm ok donc il y a bien BUILD et REFRESH...le force on demand?
    ca implique de faire un script qui fait le refresh?
    Si je remplace par REFRES ON COMMIT ca consomme plus de ressources mais la VM sera toujours VALID, ca marche comme ca?

    D'avance merci

  14. #14
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Les vues matérialisées ,quand qulequ'un a jouté une ou des colones ou si on a suprimmé une ou des colonnes il faut tout refaire,

    La facon de faire le refresh ne joue pas ... pour le statut.

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  15. #15
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut vue materialisée compile
    Salut a tous

    bon ok, donc vue que c'est un comportement normal, je me preocupe moins deja. Je vias faire qque test pour voir.
    Merci a tous pour vos reponses

    Ciao

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

Discussions similaires

  1. [10g] Recompiler un package fait freezer
    Par mariachi dans le forum PL/SQL
    Réponses: 3
    Dernier message: 03/12/2013, 11h17
  2. Lancement automatique package
    Par sunop dans le forum ODI (ex-Sunopsis)
    Réponses: 9
    Dernier message: 08/09/2012, 11h48
  3. Recompiler les Packages arpès un import
    Par bar_79 dans le forum Import/Export
    Réponses: 3
    Dernier message: 09/09/2010, 17h21
  4. recompilation automatique des objets invalides
    Par GMI3 dans le forum Administration
    Réponses: 7
    Dernier message: 08/12/2007, 23h22
  5. Suppression automatique d'un package
    Par byloute dans le forum Debian
    Réponses: 1
    Dernier message: 22/02/2006, 11h11

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