[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