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 :

[Oracle] Acceder a un fichier distant


Sujet :

Oracle

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut [Oracle] Acceder a un fichier distant
    Bonjour,

    Je dois acceder un fichier a partir de la Bdd, hors ce fichier ne se trouve pas sur la machine ou se trouve la base, et du coup il est impossible de l'ouvrir avec un utl_file.fopen.

    Comment puis je acceder a ce fichier ?

    Merci d'avance

    Keeri

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    A priori , Il faut mapper ton repertoire distant depuis ton serveur de BDD ...

    Quels sont les OS de tes deux machines ??

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    La BDD tourne sur un cluster en 2003 et devra acceder a un repertoire Samba

    On a deja essayer de mapper un lecteur reseau et de lancer la proc de test mais rien n'y fait.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    2 pistes :

    1. Est-ce que tes droits sont ok pour ton partage ???

    2. Regarde du côté de ton paramètre utl_file_dir ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select name, value from v$parameter where name like '%utl_file_dir%';
    Essaye de le mettre à '*' dans ton init.ora (il faut redémarrer la base)
    ===> utl_file_dir=*

    Attention, le mettre à * signifie que tu peux générer et lire un fichier de partout sur ton serveur ...(donc aussi au travers un partage réseau )

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par jlucch
    Essaye de le mettre à '*' dans ton init.ora (il faut redémarrer la base)
    ===> utl_file_dir=*
    A condition d'être en 8i ou de ne pas travailler avec des directories.

    NB : niveau sécurité, ce n'est tout de même pas recommandé

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    le repertoire distant est en full acces pour all

    j'ai lancé la requete et elle me ramene bien * je n'ai donc pas eu a le changer

    le service oracle est lance en "local system" est ce que cela peut influer sur l'acces au reseau ?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Quel ordre lances tu exactement ??? utl_file.fopen .... ????

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par keerigan
    On a deja essayer de mapper un lecteur reseau et de lancer la proc de test mais rien n'y fait.
    en effet, ça ne marche pas, il faut indiquer le chemin complet et non le raccourci réseau : \\machine\répertoire

  9. #9
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Voila le code de mon fichier test

    Merci de votre patience


    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
    set serveroutput on size 200000;
    execute p$syslog.LOG_NORM := 7;         
    
    declare
    
    
    l_name		varchar2(60);
    
    l_directorie	varchar2(256) := '\\@ip\temp\';
    l_nom_fichier	varchar2(256) := 'test.txt';
    l_fs           	SYS.UTL_FILE.FILE_TYPE;
    
    begin
    
    
    	l_name := 'existe_fic';
    
    	p$syslog.put_line(p$syslog.LOG_NOTICE, l_name, 'Directorie : '||l_directorie);
    
    	   begin	
    
    	      l_fs := utl_file.fopen(l_directorie, l_nom_fichier, 'r');
    
    	      p$syslog.put_line(p$syslog.LOG_NOTICE, l_name, 'OK');
    
    	      utl_file.fclose(l_fs);
    
    	      p$syslog.put_line(p$syslog.LOG_NOTICE, l_name, 'OK présence fichier');
    
    	      exception when OTHERS then
    	         p$syslog.put_line(p$syslog.LOG_NOTICE, l_name, 'Attente présence fichier');
    
    	   end;
    
    end;
    /
    

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    la directory utilisée dans UTL_FILE devrait être un objet DIRECTORY du dictionnaire oracle selon moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE OR REPLACE DIRECTORY my_dir AS '/tmp/';
    + les grant

  11. #11
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    comment dois je utiliser le repertoire cree dans utl_file.fopen ?

    (je ne conaissais pas la notion de repertoire sous oracle)

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    Après avoir créé ton objet directory et éventuellement fait les grants
    tu peux y accéder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE
      l_filehandle UTL_FILE.FILE_TYPE;
    BEGIN
    l_filehandle := UTL_FILE.FOPEN(ton_directory, l_file_name,'a');
    ...
    END
    

  13. #13
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    j'ai lancer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE OR REPLACE DIRECTORY my_dir AS '\\@ip\temp\';
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grant read, write on directory my_dir to public;
    et enfin j'ai remplacer dans mon fichier test ma ligne d'ouverture de fichier par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    l_fs := utl_file.fopen('MY_DIR', l_nom_fichier, 'a');
    et j'ai toujours le meme souci

    si je remplace mon directory par c:\ cela fonctionne (j'ai le fichier test.txt aussi a la racine de mon serveur de Bdd)

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Dans ton explorateur Windows, regarde sous quelle lettre est mappée ton répertoire ==> \temp\ , et remplace C:\ par cette lettre .... ca devrait suffire ...

  15. #15
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Citation Envoyé par jlucch
    Dans ton explorateur Windows, regarde sous quelle lettre est mappée ton répertoire ==> \temp\ , et remplace C:\ par cette lettre .... ca devrait suffire ...
    Je ne comprends pas ce que tu veux dire...
    Peux tu reexpliquer stp ?

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    D'après ce que j'ai compris , ton serveur de BDD est un windows , et ton partage est sur un autre serveur.

    Sur ton serveur BDD : Lorsque tu Mappes ton lecteur réseau partagé avec samba), tu fais :

    connecter un lecteur réseau ==> \\ip\temp\

    Si la connexion aboutie, windows attribu une lettre à ce lecteur.
    exemple : E:\

    L'instance Oracle voit ton partage via la lettre E:\ !!

    C'est donc cela que tu dois renseigner dans ton DIRECTORY.

  17. #17
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Citation Envoyé par jlucch
    D'après ce que j'ai compris , ton serveur de BDD est un windows , et ton partage est sur un autre serveur.
    c'est bien ca

    Par contre je doit etre "neuneu" car ca ne fonctionne toujours pas , dois-je redemarrer la base pour que l'instance oracle voit mon disque créé ?

    N'y a t'il pas une histoire qui raconte que le compte local system (sous lequel est lance oracle), ne peut pas acceder a d'autre machine ? (question de droits )

    afin de faire des tests, y a t'il moyen de connaitre quels sont les lecteurs que voit la base ?

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Février 2004
    Messages : 27
    Par défaut
    Il se peut que ton paramêtre utl_file_dir, dans le init.ora soit à une valeur différente de *, qui indique qu'Oracle peut aller chercher un fichier partout. Sinon tu peux spécifier chaque répertoire que tu peux aller chercher un fichier.

    Pour ma part j'ai fait cette acrobatie avec la version 8 d'Oracle.

  19. #19
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Bon apres un week end de repos et de reflexion j'ai donc repris ma longue quete de recherche de fichier distants.

    j'ai bien verifier le utl_file_dir et il est bien a *



    Ma config ressemble a ce que vous me decrivez mais il doit y avoir un petit je ne sais quoi qui empeche la recherche ...

    mais qu'est donc que ce petit je ne sais quoi ?

  20. #20
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Bon , on va essayer d'agir autrement :

    1. Vérifie une fois de plus les droits sur ton lecteur Mappé :
    par exemple , via ton explorateur windows, essaye de créer un fichier dans le répertoire distant

    2. Rajoute la gestion d'erreur suivante dans ton traitement , le but est de remonter l'erreur exacte :

    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
     
    exception
     when no_data_found
      then dbms_output.put_line('No data found....'||sqlerrm);
     when utl_file.invalid_operation
      then dbms_output.put_line('Impossible ecrire fichier : proteger en ecriture'||sqlerrm);
     when utl_file.internal_error
      then dbms_output.put_line('erreur interne'||sqlerrm);
     when utl_file.invalid_filehandle
      then dbms_output.put_line('invalid_filehandle :'||sqlerrm);
     when utl_file.invalid_mode
      then dbms_output.put_line('invalid_mode');
     when utl_file.invalid_path
      then dbms_output.put_line('invalid_path :'||sqlerrm);
     when utl_file.read_error
      then dbms_output.put_line('read_error');
     when utl_file.write_error
      then dbms_output.put_line('write_error : '|| sqlerrm);
     when value_error
      then dbms_output.put_line('value_error');
     when others
      then dbms_output.put_line('Autre :'||sqlerrm);
    3. que te dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from all_directories;

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. comment acceder à un fichier distant
    Par ramoucha23 dans le forum Général Java
    Réponses: 2
    Dernier message: 22/08/2011, 13h17
  2. Réponses: 11
    Dernier message: 20/11/2006, 23h52
  3. Réponses: 2
    Dernier message: 06/02/2006, 12h13
  4. include fichier distant
    Par noarno dans le forum ASP
    Réponses: 2
    Dernier message: 05/04/2004, 17h47
  5. MapPath et fichier distant
    Par arno_ dans le forum ASP
    Réponses: 8
    Dernier message: 16/09/2003, 17h06

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