Quantcast

PLSQL Packages

Jeudi 26 juillet 2012 4 26 /07 /Juil /2012 22:25

 

Compiler les objets Invalides.

Comment compiler les objets invalides dans une base Oracle.
Comment lister les objets invalides d'un schéma utilisateur.
Pourquoi compiler ces objets.
Pourquoi sont-ils invalides.

Nous allons voir ici les principales méthodes qui permettent de compiler les objets invalides dans Oracle 10g.
Principalement les objets de type Trigger, Procédure, Fonction, View, Package sont invalidés par exemple suite à un changement opéré par une commande DDL sur une table, laquelle est utilisée dans une vue ou un trigger, le passage d'un patch ou un Upgrade de la base de données.
Il faut savoir qu'Oracle recompile les objets qui ont le statut INVALID lorsqu'ils sont appelés et les passe donc en statut VALID si et seulement si il n'y a pas d'erreurs de recompilation. Si vous supprimez une table qui est utilisée dans une procédure, cette procédure restera INVALID tant que le code PLSQL de celle-ci restera en l'état.
Pourquoi les compiler alors si oracle le fait comme un grand ? Simplement pour éviter une compilation online qui prends des ressources cpu et provoque des événements d'attentes en pleine production c'est dire au moment ou une transaction utilisateur fait appel à cet objet invalide.




Lister les objets invalides de la base Oracle.

SQL> SELECT  owner, object_type, object_name, status
       FROM  dba_objects
      WHERE  status = 'INVALID';



Compilation niveau Objet.

 

Trigger.

Commande SQL

SQL> ALTER TRIGGER nom_trigger COMPILE;

Package

EXECUTE DBMS_DDL.ALTER_COMPILE('TRIGGER', 'nom_schéma', 'nom_trigger');

Fonction.

Commande SQL

SQL> ALTER FUNCTION nom_fonction COMPILE;

Package

EXECUTE DBMS_DDL.ALTER_COMPILE('FUNCTION', 'nom_schéma', 'nom_fonction');

Procédure.

Commande SQL

SQL> ALTER PROCEDURE nom_procedure COMPILE;

Package

EXECUTE DBMS_DDL.ALTER_COMPILE('PROCEDURE', 'nom_schéma', 'nom_procedure');

Package et Body.

Commande SQL

SQL> ALTER PACKAGE nom_package COMPILE;
SQL> ALTER PACKAGE nom_package COMPILE BODY;

Package

EXECUTE DBMS_DDL.ALTER_COMPILE('PACKAGE', 'nom_schéma', 'nom_package');
-
EXECUTE DBMS_DDL.ALTER_COMPILE('PACKAGE BODY', 'nom_schéma', 'nom_package');

View.

Commande SQL

SQL> ALTER VIEW nom_view COMPILE;



Compilation niveau Schéma.

Executer en AS SYSDBA

EXECUTE DBMS_UTILITY.COMPILE_SCHEMA(schema => 'nom_schéma');
EXECUTE UTL_RECOMP.RECOMP_SERIAL('nom_schéma');



Compilation niveau Database.

Executer en AS SYSDBA

EXECUTE UTL_RECOMP.RECOMP_SERIAL();

Commande SQL*PLUS

SQL> @?/rdbms/admin/utlrp.sql;

Haut de Page www.dba-ora.fr

Par Oracle SQL - Publié dans : PLSQL Packages
Ecrire un commentaire - Voir les 1 commentaires
Mardi 26 juin 2012 2 26 /06 /Juin /2012 22:30

 

Supprimer un job Oracle avec DBMS_JOB.

Comment supprimer un job dans Oracle.
Comment utiliser la procédure REMOVE du package DBMS_JOB.

supprimer un job oracle avec dbms_job

Syntaxe DBMS_JOB.REMOVE

 
DBMS_JOB.REMOVE (job IN BINARY_INTEGER );

Comment supprimer un job avec DBMS_JOB dans Oracle.

La procédure de suppression d'un job dans Oracle est simple avec le package DBMS_JOB, il suffit de récupérer le numéro de job en interrogeant la vue USER_JOBS, puis d'utiliser la procédure REMOVE du package DBMS_JOB.
• On remarquera l'utilisation obligatoire d'une validation de transaction avec COMMIT.

 
SQL> COL what FORMAT A50
SQL> SELECT job, what
           FROM user_jobs
       ORDER BY 1;

       JOB WHAT
---------- --------------------------------------------------
       120 SCOTT.PURGE_TABLE;
       143 SCOTT.ENVOI_STAT_MAIL;
       230 SCOTT.CALCUL_STAT;

3 ligne(s) sélectionnée(s).

SQL>

 

Nous supprimons le job 143 avec DBMS_JOB.REMOVE.
La suppression du job ne le stoppe pas si celui-ci est en cours d'exécution.

 
SQL> BEGIN
        DBMS_JOB.REMOVE(143);
        COMMIT;
     END;
     /

Procédure PL/SQL terminée avec succès.

SQL>

 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article qui sont susceptibles de vous intéresser
• JOBS DATA PUMP
• SET JOB_QUEUE_PROCESSES
Par Oracle SQL - Publié dans : PLSQL Packages
Ecrire un commentaire - Voir les 0 commentaires

Oracle Sql et administration

Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés