Pular para o conteúdo
  • Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 11 anos, 3 meses atrás por Avatar de Andrei RubinoAndrei Rubino.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #105735
    Avatar de Andrei RubinoAndrei Rubino
    Participante

      Amigos, Preciso de ajuda estou tentando inserir uma imagem em um coluna BLOB.
      Mas antes disso estou tendo esse erro:
      ORA-22288 FILE OR LOB OPERATION FILE OPEN FAILED

      Já criei um diretório e dei Grant de read,write,execute.
      Ele encontra o arquivo e em seguida gera o erro ao executar o DBMS_LOB.FILEOPEN.
      Alguém pode me ajudar ?

      Obrigado !
      ———————————-
      DECLARE
      SRC_FILE BFILE;
      DST_FILE BLOB;
      LGH_FILE BINARY_INTEGER;
      V_DIRETORIO VARCHAR2(50);
      V_FILE VARCHAR2(50);
      BEGIN
      V_DIRETORIO := ‘MY_DIR’;
      V_FILE := ‘dae.jpg’;

      SRC_FILE := BFILENAME(V_DIRETORIO, V_FILE);

      IF DBMS_LOB.FILEEXISTS(SRC_FILE) = 1 THEN
      DBMS_OUTPUT.PUT_LINE(‘EXISTS’);

      INSERT INTO TEMP_IMAGE(ID, IMAGE_NAME, IMAGE) VALUES (1, V_FILE, EMPTY_BLOB()) RETURNING IMAGE INTO DST_FILE;

      SELECT IMAGE INTO DST_FILE FROM TEMP_IMAGE WHERE ID = 1 AND IMAGE_NAME = V_FILE FOR UPDATE;

      DBMS_LOB.FILEOPEN(SRC_FILE, DBMS_LOB.FILE_READONLY);

      LGH_FILE := DBMS_LOB.GETLENGTH(SRC_FILE);

      DBMS_LOB.LOADFROMFILE(DST_FILE, SRC_FILE, LGH_FILE);

      UPDATE TEMP_IMAGE SET IMAGE = DST_FILE WHERE ID = 1 AND IMAGE_NAME = V_FILE;

      DBMS_LOB.FILECLOSE (SRC_FILE);

      ELSE
      DBMS_OUTPUT.PUT_LINE(‘NO EXISTS’);
      END IF;
      COMMIT;
      END;

      #105744
      Avatar de Sergio WilliansSergio Willians
      Mestre

        Você já verificou as permissões do arquivo ? Talvez você não tenha acessa a leitura pelo usuário que está executando o código.

        Geralmente esse problema ocorre devido a problemas com paths relativos, mas como você afirma que nessa parte do código abaixo ele é encontrado, parece realmente permissão no arquivo. Tente seguir essa linha.

        IF DBMS_LOB.FILEEXISTS(SRC_FILE) = 1 THEN
        DBMS_OUTPUT.PUT_LINE(‘EXISTS’);

        #105752
        Avatar de Andrei RubinoAndrei Rubino
        Participante

          Olá Will,
          Desculpe se não entendi direito…
          Permissão de usuário windows do arquivo ?

          Se for isso tenho controle total, e se não também já tentei executar com o SYS,
          o Erro persiste.

          Obrigado 🙂

          #105756
          Avatar de Sergio WilliansSergio Willians
          Mestre

            @Andrei

            Se você tem controle total sobre o arquivo, isso torna o problema mais estranho… 😐
            Há alguma chance de algum outro programa ou processo estar com esse arquivo aberto ? (chute)

            Já fez um teste com algum outro arquivo só por desencargo de consciência ?

            #105765
            Avatar de Andrei RubinoAndrei Rubino
            Participante

              Will,
              Também não há possibilidade de o arquivo estar aberto em outro local.
              Vou realizar um teste em uma máquina comum com o Oracle local e posto o resultado.

              Obrigado pela ajuda !

              #105770
              Avatar de Andrei RubinoAndrei Rubino
              Participante

                Olá amigos do GPO,
                Realizei o teste em uma máquina comum com o Oracle local, e deu certo consegui inserir a imagem.

                Realmente tem algo que está impedindo o acesso do meu usuário a um diretório no servidor,
                não estou com tempo para descobrir o que é que está impedindo, mas pelo menos descobri que
                é um problema local.

                Agradeço o Will pelas dicas.

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress