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

Entreprise Manager Oracle Discussion :

Comment écrire explicitement en sortie d'un job OEM ?


Sujet :

Entreprise Manager Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut Comment écrire explicitement en sortie d'un job OEM ?
    J'ai programmé sous OEM un job qui effectue un petit bout de code PL/SQL tous les jours. J'aimerais obtenir une sortie pour contrôler le déroulement du travail (en faisant "Afficher la sortie" lorsque le job est terminé), comment faire ?
    J'ai essayé avec DBMS_OUTPUT, ça ne marche pas (alors que ça fonctionne sous SQL Plus).
    Merci de votre aide
    Expérience: nom dont les hommes baptisent leurs erreurs. Oscar Wilde

  2. #2
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    bonjour,
    exécute ton job sous forme de "script sqlplus" mais ne lance pas un script (avec un ordre style @monchemin/monscript.sql) mais fait un copier - coller de ton script PL (avec les dbms_output) dans la fenêtre d'ordre sqlplus de ton job.
    et surtout n'oublie pas de mentionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     set serveroutput on size 1000000
    dans la ligne de paramètre de la fenêtre d'ordre sqlplus de ton job...

    ça devrait faire l'affaire, tu devrais avoir tes outputs dans la sortie de ton job...
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    En fait, c'est à peu près ce que j'avais fait, j'ai essayé en script sqlplus et en script dba, et je n'obtiens toujours rien en sortie, alors que sous sqlplus ça marche.
    Expérience: nom dont les hommes baptisent leurs erreurs. Oscar Wilde

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    le problème c'est que notre ami voudrait l'exécuter via OEM ...

    donc, dans OEM, tu as la JOB PROCESS PAGE dans laquelle tu coches l'option SHOW OUTPUT

    on en parle dans le chapitre 5 de Oracle Enterprise Manager Administrator's Guide

    bonne chance

    Marc

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Merci, je crois que j'ai compris ce qui n'allais pas.
    En fait, j'arrive bien à voir l'output pour les autres jobs.

    Là, ça semble venir du fait que j'exécutais le dbms_output à l'intérieur d'un begin end, apparemment ça ne marche pas, mais c'est bien embêtant quand on a autre chose à mettre dans le script...
    Expérience: nom dont les hommes baptisent leurs erreurs. Oscar Wilde

  6. #6
    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
    Citation Envoyé par zestrellita
    Là, ça semble venir du fait que j'exécutais le dbms_output à l'intérieur d'un begin end, apparemment ça ne marche pas, mais c'est bien embêtant quand on a autre chose à mettre dans le script...
    Vous pouvez donner un extrait de votre code pour clarifier la chose ?
    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

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Voilà l'essentiel de mon code :

    BEGIN
    DECLARE
    list_obj_to_process DBMS_STATS.objecttab;
    list_processed DBMS_STATS.objecttab;
    schema_name dba_tables.owner%TYPE;
    BEGIN
    schema_name := 'V26DV';
    DBMS_STATS.gather_schema_stats (ownname => schema_name,
    CASCADE => TRUE,
    options => 'LIST STALE',
    objlist => list_obj_to_process
    );

    IF list_obj_to_process.COUNT = 0
    THEN
    DBMS_OUTPUT.put_line
    ('Aucune table n''a besoin de nouvelles statistiques ');
    ELSE
    FOR i IN 1 .. list_obj_to_process.COUNT
    LOOP
    DBMS_OUTPUT.put_line ( list_obj_to_process (i).objtype
    || ' : '
    || list_obj_to_process (i).objname
    );

    DBMS_STATS.gather_schema_stats (ownname => schema_name,
    CASCADE => TRUE,
    options => 'GATHER STALE',
    objlist => list_processed
    );

    IF list_processed.COUNT = 0
    THEN
    DBMS_OUTPUT.put_line
    ('Aucune table n''a reçu de nouvelles statistiques');
    ELSE
    FOR i IN 1 .. list_processed.COUNT
    LOOP
    DBMS_OUTPUT.put_line ( list_processed (i).objtype
    || ' : '
    || list_processed (i).objname
    );

    END LOOP;
    END IF;
    END IF;
    END;
    END;


    Je préférerais d'ailleurs en faire une procédure, mais le problème c'est qu'il semble y avoir un bug avec DBMS_STATS.gather_schema_stats appelé dans une procédure
    Expérience: nom dont les hommes baptisent leurs erreurs. Oscar Wilde

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    pas d'outpu peut-être tout simplement parce que une erreur sql inetervient --> utilise EXIT comme indiqué au chap 5 mentionné ci-dessous

    au fait ne faut-il pas utiliser un SET SERVEROUTPUT ON avec Enterprise Manager également ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Oui, c'est ce que je me suis dit. L'ennui avec les scripts PL/SQL passés en tant que jobs OEM, c'est qu'il ne met pas forcément Echec même si le script n'a pas marché, il a l'air de mettre systématiquement le job en Terminé sans rien en sortie.

    Et j'ai bien essayé aussi de mettre le SET SERVEROUTPUT ON avec OEM, même résultat.
    Expérience: nom dont les hommes baptisent leurs erreurs. Oscar Wilde

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    et via la bonne syntaxe EXIT, tu récupères un code erreur ou non ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 90
    Points : 59
    Points
    59
    Par défaut
    Je ne vois pas trop comment utiliser EXIT, j'ai essayé EXIT sql.sqlcode à la fin de mon code, rien ne se passe
    Expérience: nom dont les hommes baptisent leurs erreurs. Oscar Wilde

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    il faut effectivement gèrer l'exception via un WHEN OTHERS

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

Discussions similaires

  1. Comment écrire la commande d'un job sur plusieurs lignes ?
    Par clementratel dans le forum Microsoft BI
    Réponses: 4
    Dernier message: 10/11/2008, 17h02
  2. [VBA Excel] Comment écrire un code dans le ThisWorkBook ?
    Par WebPac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2005, 15h03
  3. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00
  4. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34
  5. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 15h16

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