Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2008, 14h11   #1
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 72
Points : 26
Points : 26
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 :
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 :
ALTER procedure "RESULTAT DE LA REQUETE #1" compile;
dois-je faire une procedure?

comment faire pour la 2e requete?
pholos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 14h33   #2
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 72
Points : 26
Points : 26
un truc dans ce genre là :

Code :
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
pholos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 20h43   #3
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
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.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 21h06   #4
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
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 ...
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 09h38   #5
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 72
Points : 26
Points : 26
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.

pholos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h39.


 
 
 
 
Partenaires

Hébergement Web