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

Oracle Discussion :

[PACKAGE][Debutant] Fichier de log


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut [PACKAGE][Debutant] Fichier de log
    Bonjour à tous,

    Je cherche à truffer mes packages sous Oracle log.
    Dans mes scripts (lancé sous Unix) j'utilise des commandes du type spool / dbms_output, mais la, il s'agit d'une procédure stockée executée par un EJB, et j'aimerais avoir un fichier de log propre m'indiquant l'état de l'execution au fur et à mesure.
    Merci d'avance à ceux qui m'aideront à résoudre mon problème.

    Charles
    Je m'en fous, je suis fou!

  2. #2
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    Ce n'est pas possible en utilisant le commande SPOOL qui est une commande SQL*Plus. Vous pouvez éventuellement modifier le client (l'EJB) pour qu'il appelle DBMS_OUTPUT.GET_LINE ou plutôt remplacer vos appels à DBMS_OUTPUT.PUT_LINE
    - soit par du code qui va écrire dans un fichier texte côté serveur avec le package UTL_FILE
    - soit par du code utilisant une transaction autonome qui écrit dans une table de la base

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par pifor
    Vous pouvez éventuellement modifier le client (l'EJB) pour qu'il appelle DBMS_OUTPUT.GET_LINE
    Je ne vois pas comment procéder.. t'as des infos la dessus?
    Sinon, la solution d'utiliser le package UTL_FILE est assez interessante, mais cela implique de changer le init.ora...
    Enfin, il est malheureusement exclu de créer de nouvelles tables pour charger (un peu plus ) la BdD.
    En tout cas, merci.
    Je m'en fous, je suis fou!

  4. #4
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Citation Envoyé par Carlito_superheros
    Sinon, la solution d'utiliser le package UTL_FILE est assez interessante, mais cela implique de changer le init.ora...
    Pourquoi ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Bon, j'ai regarder rapidement, mais apparement, il faut modifier le fichier init.ora pour initialiser le paramètre utl_file_dir au nom des répertoires auxquels les utilisateurs du paquetage auront accés. (cf. http://www.eisti.fr/~info/DSI/Cours/....aide.xml.html)
    Sinon, je n'ai pas préciser que je travaillais sur Oracle 9i (peut-être que cela implique des modifications dans la gestion des package UTL_FILE? )
    Je m'en fous, je suis fou!

  6. #6
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je ne vois pas comment procéder.. t'as des infos la dessus?
    C'est la seule solution qui me semble possible si on veut garder DBMS_OUTPUT. Mais elle nécessite de modifier le code du client Oracle à chaque exécution de SQL ou PL/SQL pour récupérer le buffer de DBMS_OUTPUT et également pour écrire le contenu de ce buffer dans un fichier log côté client. Je ne la recommende pas vraiment.

    Personnellement je recommenderais plutôt la solution avec la transaction autonome car elle me semble la plus simple à mettre à oeuvre. Exemple (un peu compliqué et pas très commenté): http://asktom.oracle.com/~tkyte/debugf

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Effectivement, ca n'a pas l'air simple (ni commenté )
    Merci beaucoup, j'en sais un peu plus maintenant!!
    Je m'en fous, je suis fou!

  8. #8
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Citation Envoyé par Carlito_superheros
    Bon, j'ai regarder rapidement, mais apparement, il faut modifier le fichier init.ora pour initialiser le paramètre utl_file_dir au nom des répertoires auxquels les utilisateurs du paquetage auront accés. (cf. http://www.eisti.fr/~info/DSI/Cours/....aide.xml.html)
    Sinon, je n'ai pas préciser que je travaillais sur Oracle 9i (peut-être que cela implique des modifications dans la gestion des package UTL_FILE? )

    Ah bon je pensais qu'il fallait juste créer un directory sous oracle et hop exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DROP  DIRECTORY MY_DIR ;
    CREATE DIRECTORY MY_DIR AS '/my_directory';
    GRANT READ, WRITE ON DIRECTORY My_DIR  TO PUBLIC;

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Je reviens avec beaucoup de retard...(j'avais pas vu qu'il y avait un message de plus )
    Je vais essayer cette technique alors...
    Merci
    Je m'en fous, je suis fou!

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Alors, je me suis un peu (plus) documenté, et effectivement, il semble qu'à partir d'Oracle 9i il soit possible d'ecrire dans un fichier en déclarant un DIRECTORY et non plus en modifiant le init.ora. (cf. http://sheikyerbouti.developpez.com/...?page=Chap8#L8 )
    Par contre, quand je teste des petits exemples trouvés sur le net, bah j'ai une belle erreur!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE DIRECTORY FICHIERS_IN AS 'd:\test' ;
    GRANT READ ON DIRECTORY FICHIERS_IN TO PUBLIC ;
    GRANT WRITE ON DIRECTORY FICHIERS_IN TO PUBLIC ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare
      f utl_file.file_type;
    begin
      f := utl_file.fopen('FICHIERS_IN', 'something.txt', 'w');
      utl_file.put_line(f, 'line one: some text');
      utl_file.put_line(f, 'line two: more text');
      utl_file.fclose(f);
    end;

    Je ne pense que cela vienne d'un probleme de droit... ca me laisse perplexe à vrai dire... si qqun a un bout de soluce...
    Merci d'avance!
    Je m'en fous, je suis fou!

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 98
    Points : 50
    Points
    50
    Par défaut
    Bon aussi bête que cela puisse paraitre, j'ai réussi en précisant non pas un dossier sur mon PC ('c:\test') mais un dossier sur mon serveur ('/users/ORACLE9/toto/') et ca marche. Donc, je crois que je vais garder cette solution qui me plait pas mal...
    Je m'en fous, je suis fou!

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

Discussions similaires

  1. [debutant][Fichier] Comment obtenir le path de mon fichier ?
    Par Soulsurfer dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/06/2004, 17h09
  2. Réponses: 7
    Dernier message: 21/05/2004, 17h13
  3. [Tomcat] Fichier de logs
    Par yolepro dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 22/03/2004, 16h20
  4. Fichiers de Log
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/05/2003, 18h06
  5. [Debutant] Fichier war
    Par saispasfau dans le forum JBuilder
    Réponses: 2
    Dernier message: 17/03/2003, 15h32

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