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

SQL Oracle Discussion :

ORA-22285: répertoire ou fichier inexistant pour l'opération FILEOPEN


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut ORA-22285: répertoire ou fichier inexistant pour l'opération FILEOPEN
    bonjour,
    j'ai un problème avec ma procédure qui me permet de stocker le type blob
    mais il m'affiche une erreur

    je tiens a votre information que oracle est installé sur une machine unix et je l'attaque à partir d'une machine Windows


    voilà comment j'ai crée mon répertoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CONNECT / AS SYSDBA
    CREATE OR REPLACE DIRECTORY mydir AS '/tmp';
    GRANT read, write ON DIRECTORY mydir TO mon_user;

    ORA-22285: répertoire ou fichier inexistant pour l'opération FILEOPEN
    ORA-06512: à "SYS.DBMS_LOB", ligne 523
    ORA-06512: à "UFO4_DBO.SQL_BLOB", ligne 19
    ORA-06512: à "UFO4_DBO.PA_JEU", ligne 57
    ORA-06512: à ligne 1
    voila le code de ma procédure
    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
     
      PROCEDURE add_blob(v_NOMJEU VARCHAR2) IS
        v_blob  BLOB;
        v_bfile BFILE;
      BEGIN
        -- SET SERVEROUTPUT ON;
        -- On insére la ligne avec un blob vide dont on récupère le pointeur
        INSERT INTO t_blob
        VALUES
          (v_NOMJEU, empty_blob())
        RETURNING image INTO v_blob;
        -- On déclare un pointeur vers notre fichier
        v_bfile := bfilename(directory => 'mydir', filename => v_NOMJEU|| '.jpg');
        -- On ouvre ce fichier
     
        -- DBMS_OUTPUT.PUT_LINE('v_bfile = ' || v_bfile);
       -- v_bfile := '/home/oracle/test/pacman.jpg';
        dbms_lob.fileopen(v_bfile);
     
        -- On rempli l'emplacement du BLOB vide dans la table avec le contenu de notre fichier
        dbms_lob.loadfromfile(v_blob, v_bfile, dbms_lob.getlength(v_bfile));
        -- On ferme le fichier
        dbms_lob.fileclose(v_bfile);
      END;

    je vous remercie d'avance de votre aide ...

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Je crois que le nom du directory est créé en majuscules.

    fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from all_directories
    pour vérifier

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut
    oui il connait pas le répertoire a cause du majuscule et maintenant il me sort cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ORA-22288: échec de l'opération FILEOPEN sur le fichier ou le LOB
    No such file or directory
    ORA-06512: à "SYS.DBMS_LOB", ligne 523
    ORA-06512: à "UFO4_DBO.SQL_BLOB", ligne 19
    ORA-06512: à "UFO4_DBO.PA_JEU", ligne 57
    ORA-06512: à ligne 1

    merci de votre aide

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Le répertoire est bien sur le serveur de la base de données ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut
    quand j'accéde avec la commande cd /tmp dans le repertoire et j eliste la liste des repertoires ki existe je trouve pas l erepertoire que je viens de creer avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE OR REPLACE DIRECTORY mydir AS '/tmp';
    GRANT READ, WRITE ON DIRECTORY mydir TO mon_user;

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Attention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE OR REPLACE DIRECTORY mydir AS '/tmp';
    Ceci ne crée pas le répertoire /tmp sur le serveur.
    ça crée juste un alias (MYDIR) dans la base de donnée vers le répertoire /tmp du serveur de base de données.

    Il faut que ce répertoire existe, et soit accessible par le propriétaire de la base.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut
    oui j'ai vérifié ça ... mon utilisateur a le droit de read et write sur le répertoire /tmp/ alors je sais pas pourquoi ça marche pas .

    toujours j'ai le même problème ca change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ORA-22288: échec de l'opération FILEOPEN sur le fichier ou le LOB
    No such file or directory
    ORA-06512: à "SYS.DBMS_LOB", ligne 523
    ORA-06512: à "UFO4_DBO.SQL_BLOB", ligne 19
    ORA-06512: à "UFO4_DBO.PA_JEU", ligne 57
    ORA-06512: à ligne 1
    merci de votre aide

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    On va reprendre une check list de ton problème parce que tu n'as pas répondu correctement aux questions :

    je tiens a votre information que oracle est installé sur une machine unix et je l'attaque à partir d'une machine Windows
    Tout ce qui est sur Windows n'entre pas en jeu dans les opérations UTL_FILE.

    Sur Unix :
    Le répertoire /tmp existe-t-il ?
    Le fichier à ouvrir existe-t-il (attention, en respectant bien la casse, unix y est sensible), avec les droits de lecture pour oracle9 (ou 10 je ne connais pas la version)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut
    La je suis entrain de développer un site de e-commerce et derrière j’utilise comme base de donnée ORCALE.

    Oracle est installé sur une machine Unix.

    Ce que j’essaye de faire maintenant c’est au moment de l’ajout de mon article j’ajoute aussi sa photo.

    Comme j’ai mentionné en haut j’ai suivi les étapes de création mais à la fin il m’affiche l’erreur en question.

    Sur la machine Unix il existe le répertoire /tmp

    J’espère que j’ai bien répondu a vos questions

    Merci beaucoup

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Points : 46
    Points
    46
    Par défaut
    Hello,
    Désolée de remonter un vieux post; mais j'ai le même problème que toi et j'aimerais voir si tu as pu trouver une solution.
    Ma base 10g est sur un serveur Linux Redhat, et le client sous windows.
    Quand j'essaie d'exécuter le package sql_blob depuis toad, ça marche; mais quand je l'exécute depuis mon forms 6i, ça me génère l'erreur ORA-22288.
    Voici ma procédure de création :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE OR REPLACE DIRECTORY BLOBDIR AS '\\myserver\applications\directory';
    GRANT READ ON DIRECTORY BLOBDIR TO user;
    GRANT execute ON dbms_lob TO user;
    GRANT READ, WRITE ON DIRECTORY BLOBDIR TO user WITH GRANT OPTION;
    et le corps du package :
    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
     
    CREATE OR REPLACE PACKAGE BODY sql_blob IS
      PROCEDURE add_blob(p_mobile varchar2,p_name VARCHAR2) IS
        v_blob  BLOB;
        v_bfile BFILE;
      BEGIN
        -- On insére la ligne avec un blob vide dont on récupère le pointeur
        INSERT INTO table(mobile,type_scan,fic_scan)
        VALUES
          (p_mobile, 'scan_piece',empty_blob())
        RETURNING fic_scan INTO v_blob;
        -- On déclare un pointeur vers notre fichier
        v_bfile := bfilename(directory => 'BLOBDIR', filename => p_name);
     
            -- On ouvre ce fichier
        sys.dbms_lob.fileopen(v_bfile);
        -- On rempli l'emplacement du BLOB vide dans la table avec le contenu de notre fichier
        sys.dbms_lob.loadfromfile(v_blob, v_bfile, sys.dbms_lob.getlength(v_bfile));
        -- On ferme le fichier
        sys.dbms_lob.fileclose(v_bfile);
      END;
    END sql_blob;
    /
    Pourriez-vous m'aider svp?

Discussions similaires

  1. automatiser les mêmes tâches pour un répertoire de fichiers .txt
    Par bonelzez dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/11/2010, 13h12
  2. message pour fichier inexistant
    Par antakini dans le forum Access
    Réponses: 4
    Dernier message: 20/12/2006, 12h09
  3. [débutant]Quel fichier à joindre pour directdraw ?
    Par lvdnono dans le forum DirectX
    Réponses: 3
    Dernier message: 31/05/2004, 13h01
  4. [débutant]ou mettre un fichier java pour une appli jsp?
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 16h20
  5. [MFC] ouverture en lecture d'un fichier inexistant
    Par bigboomshakala dans le forum MFC
    Réponses: 9
    Dernier message: 07/05/2004, 13h42

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