[Cascavel-pm] Perl e Oracle

Luis Campos de Carvalho lechamps em terra.com.br
Sexta Setembro 5 16:53:12 CDT 2003


Alceu R. de Freitas Jr. wrote:
>  --- Luis Campos de Carvalho <lechamps em terra.com.br>
> escreveu: 
> 
>>   Obrigado, eu te devo esta.
>>   Meu sonho de consumo é trabalhar com Perl e
>>Oracle em um grande 
>>projeto... quem sabe um dia? =-]
> 
> 
> Nada que uma cerveja depois não resolva. :~)

   Anotado.
   Quando a gente se encontrar, me cobre. =-]

> 
>>   Você está falando de carga de dados em batch, ou
>>está falando de 
>>cadastramento de registros um-a-um, por humanos ou
>>algo parecido?
> 
> 
> Exatamente: carga/descarga via batch, com tarefas
> agendadas e tudo o mais. Antiquado, não?
>  

   Não, meu caro... moderníssimo...
   E tenho certeza de que a dica abaixo serve exatamente para o seu 
caso: use o Dataloader...

>>   Dica: o Oracle tem ferramentas (data-loader)
>>insuperáveis em 
>>velocidade para carregar dados em batch. O Data
>>Loader grava diretamente 
>>no arquivo de dados, sem solicitar ajuda do RDBMS.
>>Isso economiza o 
>>tempo de armazenamento das operações de inserção de
>>dados no Redo-Log, o 
>>que torna este método imbatível...
> 
> 
> Oracle maldito... eu queria programar em Perl e ele
> não deixa...

   =-]
   Ehehehe...

> 
>>   Stored procedures normalmente estão em disco,
(...)
>>armazenadas. É a campeã de falhas de cache ("cache
>>page miss" -- quando 
>>o que você procura não está mais em cache) do RDBMS
>>Oracle.
> 
> Então só é um método eficiênte se quase ninguém usa o
> banco? Muuuito esperto. SAP usa isso, mas ao menos
> funciona.

   Mais ou menos isso.
   Existem muitos procedimentos de tuning que podem melhorar isso.
   Mas não se entusiasme.

> 
> As procedures aqui carregam linhas de arquivos texto e
> mandam para tabelas. Isso significa que, para cada
> linha, é feito uma chamada para a procedure?
>  

   Para ter certeza disso, eu precisaria olhar suas procedures.
   Mas existe uma grande probabilidade de isso estar correto.
   Para cada linha, um novo disparo de procedure.

> 
> São confiáveis por projeto (o que significa que de vez
> em quando falha), mesmo em arquivos texto o tamanho do
> campo é delimitado. Alguns arquivos são realmente
> grandes. Preciso de logs com timestamp me dizendo onde
> o processo foi parado, e ser der, por que. As
> procedures do Oracle fazem isso, mas os logs são de
> doer de ler...
> 
   # =-] Eu poderia ser mais claro...
   # mas perderia a graça, certamente.
   no Human::Reader;
   use Perl;

> 
> Enfim, vale a pena fazer um teste entre carregar o
> mesmo arquivo de dados usando uma procedure e um
> script em Perl?
> 

   Só se junto você tentar usar o Data Loader.
   Estou certo de que você pode tentar usar Perl, e pode até conseguir 
boa performance. Mas o Data Loader é o caminho. Eu cheguei a reduzir o 
tempo de carga de dados para 10% (sim, 10 vezes) usando o Data Loader... 
mas ele não dispara Triggers das tabelas, lembre disso!!!

   []'z! && Boa sorte.
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Luis Campos de Carvalho is Computer Scientist,
   PerlMonk [SiteDocClan], Cascavel-pm Moderator,
   Unix Sys Admin && Certified Oracle DBA
   http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




Mais detalhes sobre a lista de discussão Cascavel-pm