- Este tópico contém 8 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por rwarstat.
-
AutorPosts
-
28 de outubro de 2009 às 9:11 pm #90552wfoguelParticipante
Olá pessoal,
Pessoal gostaria de saber se alguem conhece algum comando que eu possa utililzar em uma procedure do Oracle, onde eu consiga copiar um arquivo e colar em um servido Linux?Gostaria da ajuda de algum, pois não consigo encontrar nada a respeito disto.
Um forte Abraço a todos.
Att:
William
Analista de Sistemas28 de outubro de 2009 às 9:21 pm #90555IshiiParticipanteOlá,
Tenho algumas perguntas:
Copiar de onde para onde? Do servidor para outra pasta dele mesmo? Ou de um cliente para o Servidor?
[]s Ishii
28 de outubro de 2009 às 9:32 pm #90556wfoguelParticipanteOlá,
Então, seria copiar de um cliente para o Servidor? Pois estou montando algo parecido com o GED, ou seja, tenho que guardar os anexos em uma pasta do servidor Linux.
Obrigado
Abraços
28 de outubro de 2009 às 9:55 pm #90557IshiiParticipanteOlá,
Acho que nesse caso, somente usando os campos tipo LOB e armazenando o anexo direto no Servidor Oracle mesmo… no caso de transferência de arquivos de cliente para servidor teria que fazer FTP etc… e ai somente com Procedure JAVA e permissões no Servidor para o FTP…
Dê uma olhada na documentação LOB do Oracle para saber mais como armazenar os arquivos no banco de dados mesmo…
[]s Ishii
28 de outubro de 2009 às 9:58 pm #90558wfoguelParticipantePor definição do projeto, resolveram que não vão armazenar no banco de dados, e sim em diretórios no Linux, isto é para não ocupar muito espaço no banco.
Muito Obrigado.
28 de outubro de 2009 às 10:15 pm #90559burgaParticipanteSe eu fosse fazer isto, tentaria o seguinte:
Como o Ishii disse, enviar o arquivo pra um campo LOB, mas no momento do insert utilizar uma trigger que recria o arquivo no servidor. A trigger de before insert recriaria o arquivo no servidor e limparia o campo LOB antes de ser inserido.
Só teria que dar uma estudada nos pacotes DBMS_LOB e UTL_FILE.
Em teoria, isso deve funcionar…
28 de outubro de 2009 às 10:22 pm #90560wfoguelParticipanteObrigo pelo caminho burga, pois vou dar uma olhada nestes pacotes se eu descobrir algo, eu coloco aki, e se alguem descobrir tb, por favor não deixe de postar aqui.
Abraços
William
28 de outubro de 2009 às 10:53 pm #90561IshiiParticipante[quote=”wfoguel”:3f7buv5w]Por definição do projeto, resolveram que não vão armazenar no banco de dados, e sim em diretórios no Linux, isto é para não ocupar muito espaço no banco.
Muito Obrigado.[/quote]
Olá,
Entendo que alterar uma definição de projeto causa um transtorno em muitos aspectos (principalmente políticos) porém pode ser um ponto interessante para analisar se colocarmos os prós e contras:
Armazenar o Anexo no Banco de Dados:
Prós:
Segurança do Conteúdo: pois em tese, somente que tivesse acesso ao Banco poderia e ainda via aplicação fazer a alteração do conteúdo de um anexo;
Segurança de Acesso Externo ao Servidor: que atire a primeira pedra quem nunca trabalhou com um Adm de Rede que tinha uma senha de 15 caracteres sendo 4 númericos 3 de caracteres especiais e ainda com 2 espaços em branco como senha e para conseguir um FTP além da cópia do passaporte tinha deixar uma amostra de sangue para exames de DNA. No Banco de dados seria outra história;
Tempo para desenvolvimento: lendo o material e fazendo alguns teste notará que isso não é tão demorado;
Consulta do Anexo: com o on context as consultas dentro dos anexos serão muito melhores pois são queries…no caso de ser apenas um arquivo… isso fica mais difícil…
Visualização do Conteúdo: como está no Banco, sua aplicação pode fazer isso, se for um anexo somente com o Programa de origem (maquinas sem ADOBE Reader terão que ter instalado para abrir o anexo em pdf)
Contras:
Espaço em Disco: não tenho muita certeza mas não sei se a diferença será tão grande assim, precisaria de um teste mais apurado;
Alguns recursos requerem Oracle Enterprise e isso pode ser mais caro…Não sei se tem mais coisas, mas tente levar isso em consideração e ao Gerente do Projeto para que isso seja analisado e se valer a pena, trocar essa definição… Mas ainda a decisão é de vocês 😀
[]s Ishii
28 de outubro de 2009 às 11:27 pm #90562rwarstatParticipanteQuanto ao espaço utilizado não tem muita diferença, pois a alocação será de acordo com o quê o campo BLOB vai utilizar.
Se estiver usando o 10g é tranqüilo de trabalhar com LOB. A dbms_lob te fornece tudo o que precisa para salvar no banco e gravar no disco. Se forutilziar 9i ou anterior terá que usar uma procedure em java para trabalhar com BLOB.
Li em algum lugar, não me lembro onde, que o 10g tem uma package específica para fazer cópias de arquivos no servidor sem utilizar os comandos do SO. Teria que dar uma pesquisada novamente no Google sobre isso.
Abraço,
Roberto -
AutorPosts
- Você deve fazer login para responder a este tópico.