Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando conteúdo de arquivos...

download Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando conteúdo de arquivos externos ao Oracle ..

of 9

Transcript of Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando conteúdo de arquivos...

  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    1/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 1/9

    sbado, 5 de dezembro de 2009

    Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY.Gerando e carregando contedo de arquivos externos ao Oracle ...

    Ol,

    Neste artigo irei demonstrar atravs de exemplos prticos como gerar arquivos externos ao

    banco de dados, bem como ler o contedo dos mesmos atravs da package UTL_FILEdisponvel

    desde a verso 7.3 do banco de dados Oracle. Em resumo, a package UTL_FILE permite que

    programas escritos em PL/SQL acessem arquivos do sistema operacional para leitura e

    escrita. Irei tambm demonstrar como carregar arquivos binrios para dentro de tabelas de

    banco dados fazendo uso da package DBMS_LOB. Por falar em arquivos binrios, o SQL*Plus

    da verso 11g j nos permite visualizar dados de colunas do tipo BLOB o que, nas verses

    anteriores, no era possvel fazendo com que o SQL*Plus emitisse a mensagem "SP2-0678:

    Coluna ou tipo de atributo no pode ser exibido pelo SQL*Plus". Com isso, no

    precisaremos mais ficar removendo as colunas do tipo de dado BLOB em uma consulta SQL.

    Enfim, ser abordado tanto o uso do j obsoleto parmetro UTL_FILE_DIR, quanto a criao

    do objeto DIRECTORY responsvel por armazenar o caminho (diretrio) de sistema

    operacional onde reside o banco de dados Oracle, de forma a permitir a escrita e leitura

    de arquivos.

    No caso de se utilizar o parmetro UTL_FILE_DIR, o comando abaixo dever ser emitido pelo

    DBA (se estiver usando spfile) ou o arquivo de inicializao alterado manualmente

    init[SID].ora. Aps a alterao, o banco de dados precisar ser reiniciado.

    alter system set utl_file_dir = '[caminho_diretorio]' scope=spfile;

    Vamos ento aos exemplos prticos. Como demonstrado abaixo, o banco de dados est com o

    parmetro UTL_FILE_DIRsetado com o caminho "/tmp" que um diretrio na qual o usurio

    de sistema operacional "oracle" possui permisses de leitura/escrita. Para essas

    demonstraes, estou utilizando o sistema operacional Linux CentOS release 5.2 e o banco

    de dados Oracle 11g (11.1.0.7.0).

    C:\>sqlplus system/*****

    SQL*Plus: Release 11.1.0.6.0 - Production on Sab Dez 5 13:15:32 2009

    Copyright (c) 1982, 2007, Oracle. All rights reserved.

    Conectado a:

    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> show parameter utl_file_dir

    NAME TYPE VALUE

    ----------------------------- ----------- ----------------------------

    utl_file_dir string /tmp

    No exempo abaixo irei gerar um arquivo simples que irei chamar de arq_teste.txtcontendo

    algumas linhas de texto. Para isso, usarei a procedure PUT_LINEda package UTL_FILE.

    -- Gerando o arquivode texto externo ao banco de dados

    SQL> declare

    2 v_arquivo utl_file.file_type;

    3 begin

    4 v_arquivo := utl_file.fopen('/tmp', 'arq_teste.txt', 'W');

    5 utl_file.put_line(v_arquivo, 'linha 1'); 6 utl_file.put_line(v_arquivo, 'linha 2');

    7 utl_file.put_line(v_arquivo, 'linha 3');

    8 utl_file.put_line(v_arquivo, 'linha 4');

    9 utl_file.put_line(v_arquivo, 'linha 5');

    10 utl_file.fclose(v_arquivo);

    11 exception

    BuscaGoogle

    Somente neste blog

    Siga-me no Google+

    Eduardo Legatti

    167 seguidores

    Seguir

    Assine em um leitor RSS

    Quem sou euEduardo Legatti

    Belo Horizonte, MG, Brazil

    Analista de Sistemas e Administrador debanco de dados. Sou ps graduado em

    Gerncia da Tecnologia da Informao, possuoas certificaes OCA 9i - OCP 9i/10g/11g OCE

    SQL Expert, e venho trabalhando como DBAOracle desde a verso 8.0.5. Me interesso

    particularmente em planejar estratgias de

    backup/recovery, performance tuning e

    projetos de bancos de dados (modelagemfsica e lgica). Como Oracle ACE, tenho ohbito de disseminar meu conhecimento

    atravs de artigos, grupos de discusso(Oracle OTN Forums) e me dedico a

    compartilhar informaes de forma a motivar

    novos DBAs. Siga-me no Google+

    Visualizar meu perfil completo

    Siga por email

    Compartilhar 0 mais Prximo blog Criar um blog Login

    Oracle Blog8i, 9i, 10g, 11g, 12c ...

    Para melhor visualizao, recomendo resoluo de no mnimo 1024 x 768 e navegadores Mozilla Firefoxou Google Chrome

    Endereo de email... Enviar

    https://twitter.com/intent/follow?original_referer=http%3A%2F%2Feduardolegatti.blogspot.com.br&region=follow_link&screen_name=eduardolegatti&source=followbutton&variant=2.0https://twitter.com/intent/follow?original_referer=http%3A%2F%2Feduardolegatti.blogspot.com.br&region=follow_link&screen_name=eduardolegatti&source=followbutton&variant=2.0http://download.oracle.com/docs/cd/E11882_01/server.112/e10820/initparams262.htmhttp://download.oracle.com/docs/cd/E11882_01/server.112/e10820/initparams262.htmhttp://feeds.feedburner.com/eduardolegattihttp://download.oracle.com/docs/cd/E11882_01/server.112/e10592/statements_5007.htmhttps://plus.google.com/+EduardoLegatti?prsrc=5http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/d_lob.htm#ARPLS66622http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/u_file.htmhttp://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://www.blogger.com/https://www.blogger.com/next-blog?navBar=true&blogID=6132267453407001083http://www.blogger.com/home#createhttp://www.blogger.com/https://plus.google.com/114480263519116382376?rel=authorhttp://www.google.com/intl/pt-BR/chrome/browser/http://getfirefox.com/http://eduardolegatti.blogspot.com.br/http://www.blogger.com/http://www.blogger.com/http://www.blogger.com/home#createhttps://www.blogger.com/next-blog?navBar=true&blogID=6132267453407001083http://www.blogger.com/profile/13417270391272587761https://plus.google.com/114480263519116382376?rel=authorhttps://twitter.com/intent/follow?original_referer=http%3A%2F%2Feduardolegatti.blogspot.com.br&region=follow_link&screen_name=eduardolegatti&source=followbutton&variant=2.0http://feeds.feedburner.com/eduardolegattihttp://feeds.feedburner.com/eduardolegattihttp://www.blogger.com/follow-blog.g?blogID=6132267453407001083http://dogtranslate%28%27pt%7Ces%27%29/http://dogtranslate%28%27pt%7Cru%27%29/http://dogtranslate%28%27pt%7Cja%27%29/http://dogtranslate%28%27pt%7Cit%27%29/http://dogtranslate%28%27pt%7Cde%27%29/http://dogtranslate%28%27pt%7Cfr%27%29/http://dogtranslate%28%27pt%7Cen%27%29/http://www.blogger.com/profile/13417270391272587761https://plus.google.com/+EduardoLegatti?prsrc=5http://download.oracle.com/docs/cd/E11882_01/server.112/e10820/initparams262.htmhttp://download.oracle.com/docs/cd/E11882_01/server.112/e10592/statements_5007.htmhttp://download.oracle.com/docs/cd/E11882_01/server.112/e10820/initparams262.htmhttp://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/d_lob.htm#ARPLS66622http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/u_file.htmhttp://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    2/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 2/9

    12 when utl_file.invalid_path then

    13 raise_application_error(-20000, 'Ateno! O caminho informado no ex

    iste.');

    14 end;

    15 /

    Procedimento PL/SQL concludo com sucesso.

    Acessando o sistema operacional, podemos ver que o arquivo arq_teste.txtfoi criado e seu

    contedo populado conforme o script PL/SQL acima.

    [oracle@linux tmp]$ ls -ltotal 8

    -rw-r--r-- 1 oracle oinstall 40 Dez 5 13:16 arq_teste.txt

    [oracle@linux tmp]$ cat arq_teste.txtlinha 1

    linha 2

    linha 3

    linha 4

    linha 5

    Para que possamos ler o contedo do arquivo que foi gerado no sistema operacional atravs

    de PL/SQL, farei uso da procedure GET_LINEda package UTL_FILE.

    -- Lendo o contedo do arquivo de texto gerado

    SQL> set serveroutput onSQL> declare

    2 v_linha varchar2(2000) := '';

    3 v_arquivo utl_file.file_type;

    4 begin

    5 v_arquivo := utl_file.fopen('/tmp', 'arq_teste.txt', 'R');

    6 loop begin

    7 utl_file.get_line(v_arquivo, v_linha);

    8 dbms_output.put_line('linha lida=' || v_linha);

    9 exception

    10 when no_data_found then

    11 utl_file.fclose(v_arquivo);

    12 exit;

    13 end;

    14 end loop;

    15 end;

    16 /linha lida=linha 1

    linha lida=linha 2

    linha lida=linha 3

    linha lida=linha 4

    linha lida=linha 5

    Procedimento PL/SQL concludo com sucesso.

    Da mesma forma que utilizamos o parmetro UTL_FILE_DIR, poderamos ter utilizado o objeto

    de banco de dados DIRECTORY. O objetivo do objeto directory (diretrio) armazenar o

    caminho de um diretrio de sistema operacional, assim como o parmetro UTL_FILE_DIR. A

    grande vantagem que podemos criar vrios objetos que apontam para diferentes diretrios

    do sistema operacional, alm de no termos que ter de efetuar o shutdown/startup da

    instncia aps a sua criao como acontece com parmetro UTL_FILE_DIR. Vale a pena

    salientar que podemos tambm configurar mltiplos caminhos com o parmetro UTL_FILE_DIRbastando, para isso, definirmos mais de uma entrada no arquivo de inicializao da

    instncia como demonstrado no exemplo abaixo:

    utl_file_dir="/u01/oradata/prod/utl_dir/"

    utl_file_dir="/u02/oradata/prod/utl_dir/"

    utl_file_dir="/u03/oradata/prod/utl_dir/"

    No mais, o objeto DIRECTORY global no banco de dados, ou seja, no de propriedade de

    nenhum usurio de banco de dados especfico (a no ser do prprio SYS). Para que os

    usurio de banco de dados possam utiliz-lo, ser necessrio conceder os privilgios READ

    (leitura) e/ou WRITE(escrita) dependendo de cada uso.

    Como j demonstrado nos exemplos acima, irei realizar a mesma operao de escrita e

    leitura em arquivos do sistema operacional mas, agora, irei fazer uso do objeto DIRECTORY

    (diretrio).

    SQL> create or replace directory arquivo_dir as '/tmp';

    Diretrio criado.

    Vale a pena salientar que os demais usurios de banco de dados devero ter os privilgios

    Mais acessadosIntroduo ao conceito de Tablespaces

    Reorganizando o Tablespace ...Estratgia de backup - RMAN

    Um pouco sobre ndices particionadosno Oracle ...

    Criando um banco de dados no modo

    silencioso com o DBCARestaurando e recuperando um banco

    de dados em outra mquina com o

    RMANMonitorando o percentual de espaolivre na tablespace. Quando devemos

    nos preocupar?Introduo ao tipo de dado TIMESTAMP

    e suas variaes ...

    Database Point-In-Time Recovery(DBPITR) e Tablespace Point-in-Time

    Recovery (TSPITR) na prtica com oRMAN ...

    Clonando um banco de dados Oraclecom o RMAN - DUPLICATE DATABASE

    Ignorando caracteres acentuados,

    maisculos e minsculos no Oracle (CaseInsensitive/Accent Insensitive)

    IMPORT CATALOG - Mais um novocomando do RMAN no Oracle 11g

    RMAN - RECOVER DROP TABLESPACE(10g vs 11g)

    Certificao Oracle OCA,OCP, OCM ...

    UNLIMITED TABLESPACE vs. QUOTASCriando um banco de dados standby

    http://eduardolegatti.blogspot.com/2012/10/criando-um-banco-de-dados-standby-com-o.htmlhttp://eduardolegatti.blogspot.com/2012/10/criando-um-banco-de-dados-standby-com-o.htmlhttp://eduardolegatti.blogspot.com.br/2012/04/unlimited-tablespace-vs-quotas.htmlhttp://eduardolegatti.blogspot.com/2007/10/certificao-oracle-ocaocp-ocm.htmlhttp://eduardolegatti.blogspot.com.br/2012/03/rman-recover-drop-tablespace-10g-vs-11g.htmlhttp://eduardolegatti.blogspot.com.br/2012/02/import-catalog-mais-um-novo-comando-do.htmlhttp://eduardolegatti.blogspot.com.br/2013/04/ignorando-caracteres-acentuados.htmlhttp://eduardolegatti.blogspot.com/2011/07/clonando-um-banco-de-dados-oracle-com-o.htmlhttp://eduardolegatti.blogspot.com/2010/03/database-point-in-time-recovery-dbpitr.htmlhttp://eduardolegatti.blogspot.com/2009/08/introducao-ao-tipo-de-dado-timestamp-e.htmlhttp://eduardolegatti.blogspot.com.br/2013/01/monitorando-o-percentual-de-espaco.htmlhttp://eduardolegatti.blogspot.com.br/2012/01/restaurando-e-recuperando-um-banco-de.htmlhttp://eduardolegatti.blogspot.com.br/2011/10/criando-um-banco-de-dados-no-modo.htmlhttp://eduardolegatti.blogspot.com.br/2011/12/um-pouco-sobre-indices-particionados-no.htmlhttp://eduardolegatti.blogspot.com/2010/10/estrategia-de-backup-rman.htmlhttp://eduardolegatti.blogspot.com/2008/06/reorganizando-o-tablespace.htmlhttp://eduardolegatti.blogspot.com/2008/03/introduo-ao-conceito-de-tablespaces.htmlhttp://www.oracle.com/technology/software/index.htmlhttp://www.linkedin.com/in/legattihttp://www.oraclecommunity.net/https://apex.oracle.com/pls/apex/f?p=19297:4:105575139418233::NO:4:P4_ID:7340
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    3/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 3/9

    apropriados, como demonstrado pelo comando abaixo, afim de terem acesso ao objeto

    DIRECTORY.

    grant read, write on directory [nome_diretorio] to [usuarios...];

    Continuando com a demonstrao, irei realizar os mesmos procedimentos, mas agora

    utilizando o objeto directory ARQUIVO_DIRem vez do caminho fixo definido no parmetro

    UTL_FILE_DIR.

    -- Gerando o arquivode texto externo ao banco de dados

    SQL> declare

    2 v_arquivo utl_file.file_type; 3 begin

    4 v_arquivo := utl_file.fopen('ARQUIVO_DIR', 'arq_teste.txt', 'W');

    5 utl_file.put_line(v_arquivo, 'linha 1');

    6 utl_file.put_line(v_arquivo, 'linha 2');

    7 utl_file.put_line(v_arquivo, 'linha 3');

    8 utl_file.put_line(v_arquivo, 'linha 4');

    9 utl_file.put_line(v_arquivo, 'linha 5');

    10 utl_file.fclose(v_arquivo);

    11 exception

    12 when utl_file.invalid_path then

    13 raise_application_error(-20000, 'Ateno! O diretrio informado no

    existe.');

    14 end;

    15 /

    Procedimento PL/SQL concludo com sucesso.

    -- Lendo o contedo do arquivo de texto gerado

    SQL> set serveroutput on

    SQL> declare

    2 v_linha varchar2(2000) := '';

    3 v_arquivo utl_file.file_type;

    4 begin

    5 v_arquivo := utl_file.fopen('ARQUIVO_DIR', 'arq_teste.txt', 'R');

    6 loop begin

    7 utl_file.get_line(v_arquivo, v_linha);

    8 dbms_output.put_line('linha lida=' || v_linha);

    9 exception

    10 when no_data_found then

    11 utl_file.fclose(v_arquivo);

    12 exit;

    13 end;

    14 end loop;15 end;

    16 /

    linha lida=linha 1

    linha lida=linha 2

    linha lida=linha 3

    linha lida=linha 4

    linha lida=linha 5

    Procedimento PL/SQL concludo com sucesso.

    Caso seja informado um objeto DIRECTORY que no exista, a mensagem de erro abaixo ser

    emitida:

    SQL> declare

    2 v_arquivo utl_file.file_type; 3 begin

    4 v_arquivo := utl_file.fopen('ARQUIVO_DIR_ERRO', 'arq_teste.txt', 'W');

    5 utl_file.put_line(v_arquivo, 'linha 1');

    6 utl_file.put_line(v_arquivo, 'linha 2');

    7 utl_file.put_line(v_arquivo, 'linha 3');

    8 utl_file.put_line(v_arquivo, 'linha 4');

    9 utl_file.put_line(v_arquivo, 'linha 5');

    10 utl_file.fclose(v_arquivo);

    11 exception

    12 when utl_file.invalid_path then

    13 raise_application_error(-20000, 'Ateno! O diretrio informado no

    existe.');

    14 end;

    15 /

    declare

    *ERRO na linha 1:

    ORA-20000: Ateno! O diretrio informado no existe.

    ORA-06512: em line 13

    Como parte de outra demonstrao, irei agora criar uma stored procedurede banco de dados

    que carregar um arquivo binrio (imagem.jpg) para dentro de uma tabela de teste. Para

    com o RMAN e abordando o ACTIVE

    DATA GUARD e o SNAPSHOT STANDBY

    no Oracle 11g

    Um pouco sobre o particionamento porreferncia (Reference Partitioning) no

    Oracle 11gBEFORE DDL TRIGGER... Protegendo

    objetos no seu banco de dados Oraclecontra alteraes indevidas

    RMAN - Backup Incremental Cumulativovs. Backup Incremental Diferencial

    Por que aps ter realizado uma

    importao, minhas tabelas no forampara o tablespace padro do usurio?

    LAST_DDL_TIME vs TIMESTAMP nasviews DBA/ALL/USER_OBJECTS. Tem

    diferena?DBNEWID - Alterando o nome de um

    banco de dados Oracle

    Interval Partitioning. Abordando umconceito de particionamento por

    intervalo do Oracle 11g.Instalando o Oracle Database Express

    Edition 10g Release 2 no Linux ...Executando operaes de manuteno

    em tabelas particionadas no Oracle ...

    Como se precaver da perda de dados

    ocasionada por uma falha de discoQuem deletou os registros da tabela?

    Um pouco dos pacotes UTL_SMTP e

    UTL_MAIL para uso em envio de e-mailsatravs do servidor Oracle ...

    Salvando o contedo de um campo

    BLOB para um arquivo em disco(BLOB_TO_FILE) ...

    Qual mesmo o tamanho de uma tabelano Oracle?

    Capturando erros DML/DDL geradospelas sesses: Um pouco da trigger de

    sistema AFTER SERVERERROREste mercado promissor? Vale a pena

    a certificao?

    Aplicando arquivos de redo logarquivados em um cold backup ...

    Assistente de instalao para o OracleInstant Client?

    Gerando backups lgicos de banco dedados no Linux atravs de um script

    Perl ...

    Coluna do tipo auto-incremento noOracle? Abordando o uso de sequncias

    no Oracle...Um pouco do pacote UTL_FILE,

    DBMS_LOB e objeto DIRECTORY.Gerando e carregando contedo de

    arquivos externos ao Oracle ...

    Definio de senhas case-sensitive noOracle 11g ...

    UNLIMITED TABLESPACE vs. RESOURCEREAD ONLY table? Abordando uma nova

    funcionalidade do Oracle 11g ...Assistente de instalao para o Oracle

    Instant Client 11gNmero por extenso monetrio e

    Clculo de Frmulas Matemticas

    Protegendo e compactando o arquivodump de exportao com o Oracle

    Export Data Pump 11g ...Descomplicando RAID 01 (0+1) e RAID 10

    (1+0)Atualizando o Oracle 10g (10.2.0.1) para

    (10.2.0.4) no Linux ...

    Salvo pelo _allow_resetlogs_corruption

    ....Utlizando MD5 no Oracle para gerao

    de senhas

    Estgios de inicializao do Oracle(NOMOUNT | MOUNT | OPEN)

    Extraindo comando DDL com o pacote

    DBMS_METADATA ...

    http://eduardolegatti.blogspot.com/2008/07/extraindo-comando-ddl-com-o-pacote.htmlhttp://eduardolegatti.blogspot.com/2008/02/estgios-de-inicializao-do-banco-de.htmlhttp://eduardolegatti.blogspot.com/2007/11/utlizando-md5-no-oracle-para-gerar.htmlhttp://eduardolegatti.blogspot.com/2008/12/salvo-pelo-allowresetlogscorruption.htmlhttp://eduardolegatti.blogspot.com/2008/12/atualizando-o-oracle-10g-10201-para.htmlhttp://eduardolegatti.blogspot.com/2008/03/descomplicando-raid-01-01-e-raid-10-10.htmlhttp://eduardolegatti.blogspot.com/2009/08/protegendo-e-compactando-o-arquivo-dump.htmlhttp://eduardolegatti.blogspot.com/2007/07/nmero-por-extenso-monetrio-e-clculo-de.htmlhttp://eduardolegatti.blogspot.com/2009/02/assistente-de-instalacao-para-o-oracle.htmlhttp://eduardolegatti.blogspot.com/2008/06/read-only-table-abordando-uma-nova.htmlhttp://eduardolegatti.blogspot.com/2009/02/unlimited-tablespace-vs-resource.htmlhttp://eduardolegatti.blogspot.com/2009/06/definicao-de-senhas-case-sensitive-no.htmlhttp://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com/2008/11/coluna-do-tipo-auto-incremento-no.htmlhttp://eduardolegatti.blogspot.com/2009/09/gerando-backups-logicos-de-banco-de.htmlhttp://eduardolegatti.blogspot.com/2008/09/instalador-para-o-oracle-instant-client.htmlhttp://eduardolegatti.blogspot.com/2009/04/aplicando-arquivos-de-redo-log.htmlhttp://eduardolegatti.blogspot.com/2009/06/este-mercado-e-promissor-vale-pena.htmlhttp://eduardolegatti.blogspot.com/2010/07/capturando-erros-dmlddl-gerados-pelas.htmlhttp://eduardolegatti.blogspot.com/2011/05/qual-e-mesmo-o-tamanho-de-uma-tabela-no.htmlhttp://eduardolegatti.blogspot.com/2010/01/salvando-o-conteudo-de-um-campo-blob.htmlhttp://eduardolegatti.blogspot.com/2010/04/um-pouco-dos-pacotes-utlsmtp-e-utlmail.htmlhttp://eduardolegatti.blogspot.com/2010/06/quem-deletou-os-registros-da-tabela.htmlhttp://eduardolegatti.blogspot.com/2007/08/como-se-precaver-da-perda-de-dados.htmlhttp://eduardolegatti.blogspot.com/2011/02/executando-operacoes-de-manutencao-em.htmlhttp://eduardolegatti.blogspot.com/2008/08/instalando-o-oracle-10g-express-edition.htmlhttp://eduardolegatti.blogspot.com/2011/06/interval-partitioning-abordando-um.htmlhttp://eduardolegatti.blogspot.com/2010/12/dbnewid-alterando-o-nome-de-um-banco-de.htmlhttp://eduardolegatti.blogspot.com/2011/05/lastddltime-vs-timestamp-nas-views.htmlhttp://eduardolegatti.blogspot.com/2008/10/por-que-aps-ter-realizado-uma-importao.htmlhttp://eduardolegatti.blogspot.com.br/2012/07/rman-backup-incremental-cumulativo-vs.htmlhttp://eduardolegatti.blogspot.com.br/2012/06/before-ddl-trigger-protegendo-objetos.htmlhttp://eduardolegatti.blogspot.com.br/2012/05/um-pouco-sobre-o-particionamento-por.htmlhttp://eduardolegatti.blogspot.com/2012/10/criando-um-banco-de-dados-standby-com-o.html
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    4/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:OracleBlog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 4/9

    isso, vou criar uma coluna do tipo de dado BLOB e fazer uso de alguns sub-programas

    disponveis na package DBMS_LOB. No mais, irei executar os procedimentos abaixo:

    -- Criando o usurio de teste

    SQL> create user scott identified by tiger

    2 default tablespace users

    3 quota unlimited on users;

    Usurio criado.

    -- Concedendo privilgios bsicos

    SQL> grant create session,create table, create procedure to scott;

    Concesso bem-sucedida.

    -- Concedendo privilgios para uso do diretrio

    SQL> grant read, write on directory ARQUIVO_DIR to scott;

    Concesso bem-sucedida.

    Na sada do SQL abaixo, podemos ver que o usurio SCOTT possui os privilgio READ

    (leitura) e WRITE(escrita) para o objeto directory ARQUIVO_DIR:

    SQL> select grantor,grantee,table_name,privilege

    2 from

    3 all_tab_privs

    4 where table_name = 'ARQUIVO_DIR';

    GRANTOR GRANTEE TABLE_NAME PRIVILEGE

    ------------------- -------------------- ---------------------- --------------

    --------

    SYS SYSTEM ARQUIVO_DIR EXECUTE

    SYS SYSTEM ARQUIVO_DIR READ

    SYS SYSTEM ARQUIVO_DIR WRITE

    SYSTEM SCOTT ARQUIVO_DIR READ

    SYSTEM SCOTT ARQUIVO_DIR WRITE

    -- Conectando com o usurio SCOTT

    SQL> connect scott/tiger

    Conectado.

    -- Criando a tabela de teste

    SQL> create table tab_imagem (

    2 id number primary key,

    3 nome varchar2(20), 4 imagem blob

    5 );

    Tabela criada.

    -- Listando o arquivo que ser carregado para a tabela tab_imagem

    [oracle@linux tmp]$ ls -l

    total 4

    -rw-r--r-- 1 oracle oinstall 809 Dez 5 13:25 imagem.jpg

    -- Criando a stored procedure carrega_imagem

    SQL> create or replace procedure carrega_imagem (p_nome_arquivo in tab_imagem.

    nome%type) as

    2 v_bfile bfile;

    3 v_blob blob;

    4 begin 5 insert into tab_imagem (id,nome,imagem)

    6 values (1,p_nome_arquivo,empty_blob())

    7 return imagem into v_blob;

    8 v_bfile := bfilename('ARQUIVO_DIR',p_nome_arquivo);

    9 dbms_lob.fileopen(v_bfile, dbms_lob.file_readonly);

    10 dbms_lob.loadfromfile(v_blob,v_bfile,dbms_lob.getlength(v_bfile));

    11 dbms_lob.fileclose(v_bfile);

    12 commit;

    13 end;

    14 /

    Procedimento criado.

    -- Carregando o arquivo para a tabela tab_imagem

    SQL> execute carrega_imagem('imagem.jpg');

    Procedimento PL/SQL concludo com sucesso.

    -- Verificando o tamanho (em bytes) do arquivo carregado

    SQL> select dbms_lob.getlength(imagem) from tab_imagem;

    DBMS_LOB.GETLENGTH(IMAGEM)

    --------------------------

    809

    2014(2)

    2013(14)

    2012(12)

    2011(15)

    2010(12)

    2009(30)

    Dezembro(1)

    Um pouco do pacote UTL_FILE,

    DBMS_LOB e objeto DIR...

    Novembro(1)

    Outubro(2)

    Setembro(2)

    Agosto(4)

    Julho(4)

    Junho(4)

    Maio(2)

    Abril(4)

    Maro(1)

    Fevereiro(2)

    Janeiro(3)

    2008(35)

    2007(14)

    2006(1)

    Carreira e Certificaes em TIMais de 2000 assinantes buscandodiariamente inspiraes para sua

    carreira Obrigado!H 10 horas

    Oracle CertificationHarness The Power Of Oracle Linux'sUnbreakable Enterprise Kernel With

    Oracle Linux Certification

    H 15 horas

    DbaGuardSeminrio com Francisco Alvarez

    Munoz - So Paulo e Porto AlegreH um dia

    VictorDBA.netSeminrios GUOB - Backup Recovery

    Um pouco do Flashback Versions Querye do Flashback Transaction Query

    disponveis a partir do Oracle 10g ...

    ltimos comentriosOl Joo, Tudo bem? Se me lembro bem,

    no PostgreS...

    Grande Legatti, tudo bom? J trabalhei

    com Oracle...Ol Armstrong, O objetivo do artigo foi

    demonstra...Otimo post! Minha dvida porque vc

    nao incluiu ...Ol Vito, Obrigado pelo comentrio e

    pela fora!...

    Arquivo do blog

    Links teisDocumentao Oracle

    My Oracle Support (Metalink)

    Timeline Oracle - desde 1977Forum de Discusso

    GPO - Grupo de Profissionais OracleOTN Amrica Latina

    askTom

    Meu profile OTN forumsOracle Mix

    The Official Oracle Wiki

    Blogroll

    http://victor-dba.blogspot.com/2014/02/seminarios-guob-backup-recovery-oracle.htmlhttp://wiki.oracle.com/http://mix.oracle.com/https://forums.oracle.com/people/EduardoLegatti/http://asktom.oracle.com/http://www.oracle.com/technology/global/lad-pt/index.htmlhttp://www.profissionaloracle.com.br/https://forums.oracle.com/community/developer/english/oracle_database/general_questionshttp://oracle.com.edgesuite.net/timeline/oracle/https://metalink.oracle.com/http://tahiti.oracle.com/http://eduardolegatti.blogspot.com/2013/12/oracle-ace.html?showComment=1390825026514#c8693954558418568225http://eduardolegatti.blogspot.com/2012/07/rman-backup-incremental-cumulativo-vs.html?showComment=1391079430404#c7268168677690514293http://eduardolegatti.blogspot.com/2012/07/rman-backup-incremental-cumulativo-vs.html?showComment=1391086017235#c2733795333984968301http://eduardolegatti.blogspot.com/2014/02/oracle-multitenant-abordando.html?showComment=1391476538800#c4131768963091179954http://eduardolegatti.blogspot.com/2014/02/oracle-multitenant-abordando.html?showComment=1391482329407#c2816673111907327482http://eduardolegatti.blogspot.com/2008/07/um-pouco-do-flashback-versions-query-e.htmlhttp://victor-dba.blogspot.com/2014/02/seminarios-guob-backup-recovery-oracle.htmlhttp://victor-dba.blogspot.com/http://databaseguard.blogspot.com/2014/02/seminario-com-francisco-alvarez-munoz.htmlhttp://databaseguard.blogspot.com/https://blogs.oracle.com/certification/entry/0925_06https://blogs.oracle.com/certification/http://feedproxy.google.com/~r/CarreirasECertificaesEmTi/~3/c31QH1vHqS8/http://carreiradeti.com.br/http://eduardolegatti.blogspot.com.br/search?updated-min=2006-01-01T00:00:00-02:00&updated-max=2007-01-01T00:00:00-02:00&max-results=1http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2007-01-01T00:00:00-02:00&updated-max=2008-01-01T00:00:00-02:00&max-results=14http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2008-01-01T00:00:00-02:00&updated-max=2009-01-01T00:00:00-02:00&max-results=35http://void%280%29/http://eduardolegatti.blogspot.com.br/2009_01_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_02_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_03_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_04_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_05_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_06_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_07_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_08_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_09_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_10_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009_11_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com.br/2009_12_01_archive.htmlhttp://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2009-01-01T00:00:00-02:00&updated-max=2010-01-01T00:00:00-02:00&max-results=30http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2010-01-01T00:00:00-02:00&updated-max=2011-01-01T00:00:00-02:00&max-results=12http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2011-01-01T00:00:00-02:00&updated-max=2012-01-01T00:00:00-02:00&max-results=15http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2012-01-01T00:00:00-02:00&updated-max=2013-01-01T00:00:00-02:00&max-results=12http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2013-01-01T00:00:00-02:00&updated-max=2014-01-01T00:00:00-02:00&max-results=14http://void%280%29/http://eduardolegatti.blogspot.com.br/search?updated-min=2014-01-01T00:00:00-02:00&updated-max=2015-01-01T00:00:00-02:00&max-results=2http://void%280%29/http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10577/d_lob.htm#ARPLS66622
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    5/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 5/9

    SQL> exit

    Desconectado de Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64

    bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    Aproveitando que utilizei funo DBMS_LOB.GETLENGTHacima, tem muita gente que acha que o

    valor retornado a quantidade de caracteres, o que no verdade. O valor retornado nada

    mais do que o tamanho do arquivo em bytes que foi carregado do sistema operacional,

    conforme mostrado abaixo:

    [oracle@linux tmp]$ ls -ltotal 4

    -rw-r--r-- 1 oracle oinstall 809Dez 5 13:25 imagem.jpg

    Para finalizar, como mencionado no incio do artigo, o SQL*Plus das verses anteriores ao

    Oracle 11g, no permitiamque o usurio visualizasse o contedo de um campo do tipo de

    dado BLOB:

    -- Utilizando o SQL*Plus da verso 10g

    C:\>sqlplus scott/tiger

    SQL*Plus: Release 10.2.0.4.0- Production on Sab Dez 5 13:28:19 2009

    Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

    Conectado a:Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select * from tab_imagem;

    SP2-0678: Coluna ou tipo de atributo no pode ser exibido pelo SQL*Plus

    Na verso 11g do SQL*Plus, agora possvel visualizarmos o contedo de um campo do tipo

    de dados BLOBcomo demonstrado abaixo. Contudo, a nica vantagem que eu vejo em relao

    ao SQL*Plus das verses anteriores de que no precisaremos mais remover as colunas do

    tipo de dado BLOB na hora de emitirmos um comando SELECT, embora que, visualizar dados

    binrios no faz l muito sentido ...

    -- Utilizando o SQL*Plus da verso 11g

    C:\>sqlplus scott/tiger

    SQL*Plus: Release 11.1.0.6.0- Production on Sab Dez 5 13:32:06 2009

    Copyright (c) 1982, 2007, Oracle. All rights reserved.

    Conectado a:

    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select * from tab_imagem;

    ID NOME IMAGEM

    ---------- ---------------- --------------------------------------------------

    ----------

    1 imagem.jpg 47494638396109000600F70000000000B1B1B1AFAFAFA3A3A3

    9999997777

    777171716B6B6B5555554B4B4B3F3F3F3D3D3DEEEEEE3B3B3B

    3333332727

    27CCCCCC191919171717111111C0C0C00D0D0D090909070707

    AAAAAAA4A4

    A49696968A8A8A8888887070706868686666666060605E5E5E

    5C5C5C5858

    58FFFFFF4848484444444040403838383232322E2E2EDDDDDD

    2828282626

    262424242222221E1E1E181818141414121212101010BBBBBB

    080808B3B3

    B3000000000000000000000000000000000000000000000000

    0000000000

    262424242222221E1E1E181818141414121212101010BBBBBB

    080808B3B3

    00000000000000000000000000000000000000000000000000

    0000000000

    262424242222221E1E1E181818141414121212101010BBBBBB

    080808B3B3 777171716B6B6B5555554B4B4B3F3F3F3D3D3DEEEEEE3B3B3B

    3333332727

    262424242222221E1E1E181818141414121212101010BBBBBB

    080808B3B3

    00000000000000000000000000000000000000000000000000

    0000000000

    Oracle 12cH uma semana

    Blog do DBA/Instrutor Fbio PradoOracle ACE, o que isso?

    H 2 semanas

    Blog Flvio SoaresMatriz de certificao Oracle Database

    H 3 meses

    Blog do PortilhoLendas do Oracle

    H 6 meses

    Vinicius DBAOracle Database 12c

    H 7 meses

    Blog do Rodrigo AlmeidaVdeo: Desenvs e DBA Fuhrer

    H 8 meses

    Oracle ACEs

    Rodrigo Almeida

    Ricardo Portilho Proni

    Rodrigo Mufalani

    Antonio Jose Rodrigues Neto

    Marcus Vinicius Miguel Pedro

    David Siqueira

    Wagner Bianchi

    Victor Armbrust

    Alexandre Borges

    Eduardo Legatti

    Fabio Prado

    Alex Zaballa

    Marcadores

    dba(48) oracle 11g(25) oracle 10g(23) sql (23) oracle (16) tablespace

    (14) desenvolvedor (13) rman (11) linux(9) segurana(9) certificao (8) oracle 9i (7)recovery(7) atualizao(6) backup (6) exame

    (6) exp (6) oracle 8i (6) oracle metalink (6)

    Twitter

    http://eduardolegatti.blogspot.com.br/search/label/oracle%20metalinkhttp://eduardolegatti.blogspot.com.br/search/label/oracle%208ihttp://eduardolegatti.blogspot.com.br/search/label/exphttp://eduardolegatti.blogspot.com.br/search/label/examehttp://eduardolegatti.blogspot.com.br/search/label/backuphttp://eduardolegatti.blogspot.com.br/search/label/atualiza%C3%A7%C3%A3ohttp://eduardolegatti.blogspot.com.br/search/label/recoveryhttp://eduardolegatti.blogspot.com.br/search/label/oracle%209ihttp://eduardolegatti.blogspot.com.br/search/label/certifica%C3%A7%C3%A3ohttp://eduardolegatti.blogspot.com.br/search/label/seguran%C3%A7ahttp://eduardolegatti.blogspot.com.br/search/label/linuxhttp://eduardolegatti.blogspot.com.br/search/label/rmanhttp://eduardolegatti.blogspot.com.br/search/label/desenvolvedorhttp://eduardolegatti.blogspot.com.br/search/label/tablespacehttp://eduardolegatti.blogspot.com.br/search/label/oraclehttp://eduardolegatti.blogspot.com.br/search/label/sqlhttp://eduardolegatti.blogspot.com.br/search/label/oracle%2010ghttp://eduardolegatti.blogspot.com.br/search/label/oracle%2011ghttp://eduardolegatti.blogspot.com.br/search/label/dbahttps://apex.oracle.com/pls/apex/f?p=19297:4:112069536116671::NO:4:P4_ID:7480https://apex.oracle.com/pls/apex/f?p=19297:4:6023176900833::NO:4:P4_ID:7500http://apex.oracle.com/pls/apex/f?p=19297:4:105575139418233::NO:4:P4_ID:7340http://apex.oracle.com/pls/otn/f?p=19297:4:107947180825141::NO:4:P4_ID:6880http://apex.oracle.com/pls/otn/f?p=19297:4:107947180825141::NO:4:P4_ID:6800http://apex.oracle.com/pls/otn/f?p=19297:4:7594488089665562::NO:4:P4_ID:4541http://apex.oracle.com/pls/otn/f?p=19297:4:4054991364734240::NO:4:P4_ID:4563http://apex.oracle.com/pls/otn/f?p=19297:4:1034193241555358::NO:4:P4_ID:2540http://apex.oracle.com/pls/otn/f?p=19297:4:1245302532209428::NO:4:P4_ID:1340http://apex.oracle.com/pls/otn/f?p=19297:4:723572638244453::NO:4:P4_ID:1020http://apex.oracle.com/pls/otn/f?p=19297:4:7476568250147766::NO:4:P4_ID:920http://apex.oracle.com/pls/otn/f?p=19297:4:8800542398202695::NO:4:P4_ID:900http://www.rodrigoalmeida.net/blog/video-desenvs-dba-fuhrer/http://www.rodrigoalmeida.net/bloghttp://www.viniciusdba.com.br/blog/?p=1253&utm_source=rss&utm_medium=rss&utm_campaign=oracle-database-12chttp://www.viniciusdba.com.br/bloghttp://profissionaloracle.com.br/blogs/portilho/2013/08/11/lendas-do-oracle/http://profissionaloracle.com.br/blogs/portilhohttp://flaviosoares.com/2013-11/matriz-de-certificacao-oracle-database/http://flaviosoares.com/http://feedproxy.google.com/~r/fabioprado/StRk/~3/wtsUJgxJQwk/oracle-ace-o-que-e-isso.htmlhttp://www.fabioprado.net/http://victor-dba.blogspot.com/2014/02/seminarios-guob-backup-recovery-oracle.html
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    6/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 6/9

    Tweet 0 1

    A49696968A8A8A8888887070706868686666666060605E5E5E

    5C5C5C5858

    262424242222221E1E1E181818141414121212101010BBBBBB

    080808B3B3

    777171716B6B6B5555554B4B4B3F3F3F3D3D3DEEEEEE3B3B3B

    3333332727

    A49696968A8A8A8888887070706868686666666060605E5E5E

    5C5C5C5858

    00000000000000000000000000000000000000000000000000

    0000000000

    262424242222221E1E1E181818141414121212101010BBBBBB

    080808B3B3

    00000000000000000000000000000000000000000000000000

    0000000000

    00000000000000000000000000000000000000000000000000

    0000000000

    A49696968A8A8A8888887070706868686666666060605E5E5E

    5C5C5C5858

    777171716B6B6B5555554B4B4B3F3F3F3D3D3DEEEEEE3B3B3B

    3333332727

    00000000000000000000000000000000000000000000000000

    0000000000

    00000000000000000000000000000000000000000000000000

    0000000000

    00000000000000000000000000000000000000000000000000

    0000000000

    002C000000000900060000080E0049081C48B0A0C183081326

    0C08003B00

    Google+

    Postado por Eduardo Legatti s 14:10

    Marcadores: blob, dba, dbms_lob, directory, pl/sql, sqlplus, utl_file

    Posts Relacionados

    Um pouco sobre SecureFile LOBS no Oracle 11g

    Salvando o contedo de um campo BLOB para um arquivo em disco (BLOB_TO_FILE) ...

    Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando c ontedo de

    arquivos externos ao Oracle ...

    Um pouco do Oracle Text ...

    Pesquisando uma palavra ou texto em um schema do banc o de dados Orac le

    Um pouco do SQL*Loader

    Criando um banco de dados no modo silencioso c om o DBCA

    Um pouco sobre o Flashback Database 10g/11g ...

    Definindo a ordem de execu o de triggers no Oracle 11g ...

    Gerando sadas em formato HTML no SQL*Plus

    Habilitando o suporte acentuao no pro mpt do DOS para uso do SQ L*Plus

    Gerando backups fsicos de banco de dados com o RMAN atravs de um shell script no Linux ...

    Gerando backups lgicos de banco de dados no Linux atravs de um script Perl ...

    11 comentrios:

    Oracle Database Events

    Plug into the Cloud with Oracle Database 12c

    Find an event near you! pub.vitrue.com/FxD6

    Retweeted by Eduardo Legatti

    Oracle Database

    @OracleDatabase

    Expand

    AWSHUB Champion ;-)

    awshub.com.br/profissional/e

    pic.twitter.com/AAoiRMtRha

    Eduardo Legatti

    @eduardolegatti

    Expand

    Upgrades to 11g are finally complete | The

    ORACLE-BASE Blog

    oracle-base.com/blog/2014/02/1

    Retweeted by Eduardo Lega tti

    TimHall

    @oraclebase

    Expand

    Portilho

    22h

    18h

    12 Feb

    12 Feb

    Tweets Follow

    Tweet to @eduardolegatti

    David Ricardodisse...

    Fala Eduardo, como tem passado?Bem meio "chover no molhado" dizer que o Post esta excelente,quando se trata de um profissional do seu nivel nem temos o quecomentar. Mas falando um pouco do contedo do Post, eu gosteimuito, visto que tenho pouco contato tanto com a DBMS_LOB quantocom a sua utilizao, e com seus passos com ceteza ficr maissimples caso eu necessite implementa-la ou at mesmo usa-la atitulo de testes.Forte abrao tudo de bom!!!!

    8 de dezembro de 2009 15:01

    Helio disse...

    Eduardo,

    Muito bom o post. S gostaria de esclarecer uma coisa: existe comoeu pegar de um diretrio local? De uma pasta 'C:/temp' por exemplo.Estou com a necessidade de guardar na tabela um arquivo pdf e queno estar no servidor do bd e sim na mquina local.

    J pesquisei bastante e no consegui chegar em uma concluso a

    http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1260291701564#c961025434131605709http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com/2010/01/salvando-o-conteudo-de-um-campo-blob.htmlhttp://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1260291701564#c961025434131605709http://www.blogger.com/profile/17048154022556712556http://legatti.wufoo.com/forms/formulario-de-contato/http://technorati.com/faves?sub=addfavbtn&add=http://eduardolegatti.blogspot.comhttp://www.addthis.com/bookmark.phphttps://twitter.com/intent/tweet?screen_name=eduardolegattihttps://twitter.com/eduardolegattihttps://twitter.com/eduardolegattihttps://twitter.com/rportilhoproni/statuses/433562141254115330https://twitter.com/oraclebase/statuses/433549815796867072https://twitter.com/eduardolegatti/statuses/433676291150057472https://twitter.com/OracleDatabase/statuses/433610210180337664https://twitter.com/rportilhopronihttps://twitter.com/oraclebase/statuses/433549815796867072https://twitter.com/oraclebasehttps://twitter.com/eduardolegattihttp://t.co/nL2KjLDa7Hhttps://twitter.com/eduardolegatti/statuses/433676291150057472https://twitter.com/eduardolegattihttp://twitter.com/eduardolegatti/status/433676291150057472/photo/1http://t.co/AAoiRMtRhahttp://t.co/0yKeP1JgBAhttps://twitter.com/OracleDatabase/statuses/433610210180337664https://twitter.com/OracleDatabasehttps://twitter.com/eduardolegattihttp://t.co/jipJ93FQARhttp://eduardolegatti.blogspot.com/2009/09/gerando-backups-logicos-de-banco-de.htmlhttp://eduardolegatti.blogspot.com/2009/10/gerando-backups-fisicos-de-banco-de.htmlhttp://eduardolegatti.blogspot.com/2011/01/habilitando-o-suporte-acentuacao-no.htmlhttp://eduardolegatti.blogspot.com/2012/09/gerando-saidas-em-formato-html-no.htmlhttp://eduardolegatti.blogspot.com/2011/08/definindo-ordem-de-execucao-de-triggers.htmlhttp://eduardolegatti.blogspot.com/2011/09/um-pouco-sobre-o-flashback-database.htmlhttp://eduardolegatti.blogspot.com/2011/10/criando-um-banco-de-dados-no-modo.htmlhttp://eduardolegatti.blogspot.com/2013/03/um-pouco-do-sqlloader.htmlhttp://eduardolegatti.blogspot.com/2013/11/pesquisando-uma-palavra-ou-texto-em-um.htmlhttp://eduardolegatti.blogspot.com/2008/06/um-pouco-do-oracle-text.htmlhttp://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com/2010/01/salvando-o-conteudo-de-um-campo-blob.htmlhttp://eduardolegatti.blogspot.com/2012/11/um-pouco-sobre-securefile-lobs-no.htmlhttp://eduardolegatti.blogspot.com.br/search/label/utl_filehttp://eduardolegatti.blogspot.com.br/search/label/sqlplushttp://eduardolegatti.blogspot.com.br/search/label/pl%2Fsqlhttp://eduardolegatti.blogspot.com.br/search/label/directoryhttp://eduardolegatti.blogspot.com.br/search/label/dbms_lobhttp://eduardolegatti.blogspot.com.br/search/label/dbahttp://eduardolegatti.blogspot.com.br/search/label/blobhttp://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttps://plus.google.com/114480263519116382376?rel=authorhttp://twitter.com/search?q=http%3A%2F%2Feduardolegatti.blogspot.com.br%2F2009%2F12%2Fum-pouco-do-pacote-utlfile-dbmslob-e.htmlhttps://twitter.com/intent/tweet?original_referer=http%3A%2F%2Feduardolegatti.blogspot.com.br%2F2009%2F12%2Fum-pouco-do-pacote-utlfile-dbmslob-e.html&text=Um%20pouco%20do%20pacote%20UTL_FILE%2C%20DBMS_LOB%20e%20objeto%20DIRECTORY.%20Gerando%20e%20carregando%20conte%C3%BAdo%20de%20arquivos%20externos%20ao%20Oracle%20...&tw_p=tweetbutton&url=http%3A%2F%2Feduardolegatti.blogspot.com.br%2F2009%2F12%2Fum-pouco-do-pacote-utlfile-dbmslob-e.html%23.UvyykcUl1A8.twitter
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    7/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 7/9

    respeito.

    Fico no aguardo. Obrigado!

    17 de novembro de 2010 12:55

    Eduardo Legattidisse...

    Ol Helio,

    Localmente? Via PL/SQL acho que voc no vai encontrar nada arespeito. A nica forma de voc fazer isso vai ser utilizando

    ferramentas grficas PL/SQL Developer, TOAD, etc...

    Abraos e at mais ...

    17 de novembro de 2010 13:09

    Ellen disse...

    Ol Eduardo,

    Seu Post foi realmente muito til, obrigada por compartilhar!!!Consegui entender muitas coisas sobre UTL_FILE, porm estou comuma dvida: voc disse que eu posso usar o UTL_FILE_DIR ou oobjeto DIRECTORY, existe como no mesmo banco eu utilizar essasduas opes? Pergunto isso pois como eu tenho objetos DIRECTORY

    criados, nao consigo abrir os arquivos somente com o endereo ouUTL_FILE_DIR

    25 de novembro de 2010 17:49

    Eduardo Legattidisse...

    Ol Ellen,

    No h nenhuma restrio em utilizar as duas opes no mesmobanco de dados. Eu apenas quis demonstrar um e outro ;-)

    Abraos e at mais ...

    25 de novembro de 2010 18:35

    Paulo Souza disse...

    Ol Eduardo,

    J existe algum modo de armazenar um arquivo local em tabela doOracle?

    Aps muitas pesquisas, optei por perguntar a respeito.

    Desde j, grato pela ateno dispensada.

    5 de abril de 2011 11:22

    Eduardo Legattidisse...

    Ol Paulo,

    Se voc est se referindo em enviar um arquivo da sua mquina(local) para uma tabela no servidor Oracle, ento somente utilizandoferramentas grficas.

    Abraos e at mais ...

    5 de abril de 2011 11:34

    Annimo disse...

    Boa tarde, qual o impacto em armazenar arquivos blob em disco ouem banco para o backup?Obrigada

    11 de janeiro de 2013 17:00

    Eduardo Legattidisse...

    Ol Annimo,

    Vejo que a sua rotina de backup ser um pouco mais complexa e ter

    http://www.blogger.com/profile/13417270391272587761http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1357930833283#c6070939641930319113http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1302014087864#c5722102597262737419http://www.blogger.com/profile/13417270391272587761http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1302013349857#c3913716898116678640http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1290717350989#c2434864766814458624http://www.blogger.com/profile/13417270391272587761http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1290714566092#c3310180537558570267http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1290006560595#c6485354362012264189http://www.blogger.com/profile/13417270391272587761http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1290005704550#c7079944800680503933
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    8/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html 8/9

    Postagem mais recente Postagem mais antiga

    Postar um comentrio

    Incio

    Downloads

    Assistente de Instalao do Oracle Instant Client 10g (20M)

    Assistente de Instalao do Oracle Instant Client 11g (26M)

    Postagens populares

    Descomplicando RAID 01 (0+1) e RAID 10 (1+0)

    Ol, Quando falamos em bancos de dados, a primeira coisa que vem em nossasmentes a preocupao com a performance, mas segurana para...

    Reorganizando o Tablespace ...

    Ol, Dando prosseguimento ao artigo de Maro de 2008 sobre introduo ao

    conceito de tablespaces, sabemos que o armazenamento dentro de u...

    Certificao Oracle OCA,OCP, OCM ...Ol, O processo para obter a certificao Oracle, se resume em ter xito em um

    conjunto de exames em formato eletrnico, todos em ingls ...

    Monitorando o percentual de espao livre na tablespace. Quando devemos nos preocupar?

    uma passo a mais, pois, alm de realizar o backup do banco dedados, voc ter que realizar o backup dos arquivos externos.Pessoalmente, no gosto da idia de gravar arquivos em disco fora dobanco de dados. Por exemplo, perdemos a recuperabilidade destainformao (point in time recovery) caso haja necessidade de algumrecover do banco de dados. Hoje em dia, com o Oracle ScureFiles emantendo o contedo do LOB (BLOB/CLOB) em tablespacesespecficas, no vejo motivos para realizar essa separao. paramaiores informaes veja os artigos Um pouco sobre SecureFile LOBSno Oracle 11ge Migrando para o SecureFile LOBS no Oracle 11g com oDBMS_REDEFINITION

    Abraos

    Legatti

    12 de janeiro de 2013 17:06

    Edmar Carvalhaesdisse...

    Oi amigo tudo bem? Eu preciso disto mas para a verso do SQLServer, sabe onde eu vou achar isto? Eu preciso exatmento disto.

    26 de maro de 2013 15:57

    Eduardo Legattidisse...

    Ol Edmar,

    No SQL Server, voc pode dar uma pesquisada sobre Linked Serversou at mesmo sobre BULK INSERT, no caso de enviar contedo dearquivos externos para dentro do banco de dados.

    Exemplo de um arquivo .csv:

    BULK INSERT meubanco.dbo.EmployeesFROM 'C:\Data\meuarquivo.txt'WITH(DATAFILETYPE = 'char',FIELDTERMINATOR = ',',ROWTERMINATOR = '\r\n');

    Abraos,

    Legatti

    26 de maro de 2013 17:13

    http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1364328807014#c1097061268046706606http://www.blogger.com/profile/13417270391272587761http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1364324220492#c4438814396317557206http://www.blogger.com/profile/09169868211799168044http://eduardolegatti.blogspot.com/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.html?showComment=1358017598853#c2965872189748113214http://eduardolegatti.blogspot.com.br/2012/12/migrando-para-o-securefile-lobs-no.htmlhttp://eduardolegatti.blogspot.com.br/2012/11/um-pouco-sobre-securefile-lobs-no.htmlhttp://eduardolegatti.blogspot.com.br/2013/01/monitorando-o-percentual-de-espaco.htmlhttp://eduardolegatti.blogspot.com.br/2007/10/certificao-oracle-ocaocp-ocm.htmlhttp://eduardolegatti.blogspot.com.br/2008/06/reorganizando-o-tablespace.htmlhttp://eduardolegatti.blogspot.com.br/2008/03/descomplicando-raid-01-01-e-raid-10-10.htmlhttp://eduardolegatti.blogspot.com/2009/02/assistente-de-instalacao-para-o-oracle.htmlhttp://eduardolegatti.blogspot.com/2008/09/instalador-para-o-oracle-instant-client.htmlhttp://eduardolegatti.blogspot.com.br/http://www.blogger.com/comment.g?blogID=6132267453407001083&postID=2120351553094493486http://eduardolegatti.blogspot.com.br/2007/10/certificao-oracle-ocaocp-ocm.htmlhttp://eduardolegatti.blogspot.com.br/2008/06/reorganizando-o-tablespace.htmlhttp://eduardolegatti.blogspot.com.br/2008/03/descomplicando-raid-01-01-e-raid-10-10.htmlhttp://eduardolegatti.blogspot.com.br/2009/11/realizando-downloads-do-site-da-oracle.htmlhttp://eduardolegatti.blogspot.com.br/2010/01/salvando-o-conteudo-de-um-campo-blob.html
  • 7/22/2019 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos exte

    9/9

    13/2/2014 Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregando contedo de arquivos externos ao Oracle ...:Oracle Blog

    http://eduardolegatti blogspot com br/2009/12/um pouco do pacote utlfile dbmslob e html 9/9

    Ol, Para qualquer DBA, o monitoramento constante e preventivo do banco dedados fundamental. Se o mesmo no for monitorado de forma c...

    Restaurando e recuperando um banco de dados em outra mquina com o RMAN

    Ol, Imagine um cenrio de desastre completo, ou seja, o servidor de banco de

    dados sofreu uma pane na qual no s o software Oracle se co...

    Um pouco do Oracle SQL Developer ...

    Ol, Par a os fs do velho e bom SQL*PLUS , TOAD (uso comercial, mas possui

    verso gratuita co m limitaes) e PL/SQL DEVELOPER (uso c...

    Removendo registros duplicados de uma tabela usando o ROWID

    Ol, Antes de demonstrar como remover linhas duplicadas de uma tabela, irei comentar um

    pouco sobre o que ROWID (estendido) no Oracle. ...

    Introduo ao conceito de restries de integridade adiveis (DEFERRABLE CONSTRAINTS)

    Ol, Neste artigo irei demonstrar a aplicao e uso da restrio (constraint) adivel (deferrable)que um recurso disponvel desde a ver...

    Um pouco do pacote UTL_FILE, DBMS_LOB e objeto DIRECTORY. Gerando e carregandocontedo de arquivos externos ao Oracle ...

    Ol, Neste artigo irei demonstrar atravs de exemplos prticos como gerar arquivos externos ao

    banco de dados, bem como ler o contedo d...

    Oracle Multitenant: Abordando a arquitetura e criao do Container Database

    (CDB) e Pluggable Databases no Oracle 12c

    Ol, Como j abordado no artigo de Junho/2013 , o Oracle Database 12c agora

    suporta uma nova arquitetura ( option ) chamada Multit...

    logBlogs.Com.Br

    Oracle Blog by Eduardo Legattiis licensed under a Creative Commons Atribuio-Uso No-Comercial 2.5 Brasil License.

    Oracle Blog no se responsabiliza pelo uso dos c digos e informae s aqui fornecidas.

    http://creativecommons.org/licenses/by-nc/2.5/br/http://eduardolegatti.blogspot.com/http://creativecommons.org/licenses/by-nc/2.5/br/http://blogblogs.com.br/api/claim/-789398096/223508/160795http://eduardolegatti.blogspot.com.br/2014/02/oracle-multitenant-abordando.htmlhttp://eduardolegatti.blogspot.com.br/2009/12/um-pouco-do-pacote-utlfile-dbmslob-e.htmlhttp://eduardolegatti.blogspot.com.br/2010/08/introducao-ao-conceito-de-restricoes-de.htmlhttp://eduardolegatti.blogspot.com.br/2007/12/removendo-registros-duplicados-de-uma.htmlhttp://eduardolegatti.blogspot.com.br/2008/05/um-pouco-do-oracle-sql-developer.htmlhttp://eduardolegatti.blogspot.com.br/2012/01/restaurando-e-recuperando-um-banco-de.htmlhttp://eduardolegatti.blogspot.com.br/2014/02/oracle-multitenant-abordando.htmlhttp://eduardolegatti.blogspot.com.br/2008/05/um-pouco-do-oracle-sql-developer.htmlhttp://eduardolegatti.blogspot.com.br/2012/01/restaurando-e-recuperando-um-banco-de.htmlhttp://eduardolegatti.blogspot.com.br/2013/01/monitorando-o-percentual-de-espaco.html