[Cascavel-pm] Compartilhar conexão DBD::Oracle entre processos (usando XML::Twig)

Joenio Costa joenio em gmail.com
Segunda Abril 9 08:00:08 PDT 2007


Hummn...
Acho que essas dicas irão salvar meu dia, estou colhendo boas
informações com elas.

Por enquanto já tenho confirmação que o problema é mesmo o fork criado
pelo XML::Twig, mas ainda não sei em que momento e local isto está
ocorrendo...

"trace(1), trace(2), irei até o trace(15) se precisar... "  :-)

Obrigado MDA!

Em 06/04/07, Marco A P D'Andrade<mdacwb em gmail.com> escreveu:
> Fala Joenio!
>
> Assim como o Champs, eu tive problemas similares a muito tempo atras...
>
> Lembro que minha solução foi redefinir a função de disconnect (ou auto
> destroy) do DBI para evitar isso, mas na mesma situação... eu tinha um
> fork explicito...
>
> Para tirar a dúvida se este é o seu caminho, causado pelo fork uma boa
> alternativa, ao meu ver é o TRACE. Algumas dicas para verificação
> rápida estão descritas no DBI:
>
>   Conceito e niveis de trace
>      http://search.cpan.org/~timb/DBI-1.54/DBI.pm#TRACING
>
>    Habilitando com o uso de variaveis de ambiente
>      http://search.cpan.org/~timb/DBI-1.54/DBI.pm#DBI_TRACE
>
>
> Sds,
> Marco Antonio
>
> Em 06/04/07, Luis Motta Campos<luismottacampos em yahoo.co.uk> escreveu:
> > On Apr 5, 2007, at 11:28 PM, Joenio Costa wrote:
> > > Olá Pessoal,
> > >
> > > Preciso analisar um XML e gravar os seus dados num banco Oracle, estou
> >
> >    Esta lista é só desgraça mesmo... ;-) XML *E* Oracle, juntos...
> > ninguém merece.
> >
> > > utilizando XML::Twig com parametro twig_handlers para fazer o parser
> > > do XML. O XML tem aproximadamente 35 MB e isto iria consumir muita
> > > memória caso eu não utilize o parametro twig_handlers. Não encontrei
> > > na documentação do XML::Twig mas notei que ao utilizar esse parametro
> > > é criado um processo filho, e é isto que esta causando problemas com
> > > minha conexão com o Oracle.
> >
> >    Aqui tem um problema conceitual. Talvez seja melhor usar um parser
> > incremental (DOM? SAX? Quem sabe o nome certo?), que vai armazenar
> > apenas um pedaço do seu arquivo no disco, e não vai detonar a sua
> > memória. Você precisa mesmo usar o XML::Twig? Ele parece ser apenas
> > um toolkit construído sobre o XML::Parser, que me parece ser mais
> > interessante para o seu caso...
> >
> > > Eu obtenho o seguinte erro ao executar algo parecido com o exemplo
> > > abaixo:
> > > DBD::Oracle::db disconnect failed: ORA-03113: end-of-file on
> > > communication channel (DBD ERROR: OCISessionEnd)
> >
> >    Você parece já ter encerrado esta conexão uma vez.
> >    Pode me dar mais informação sobre este processo "extra" que você
> > está vendo? Isso é estranho para mim...
> >
> > > --------
> > >
> > > use DBI;
> > > use XML::Twig;
> > >
> > > my $dbh = DBI->connect('dbi:Oracle:database', 'user', 'pass');
> > > my $sth = $dbh->prepare("
> > >       INSERT INTO table (col1, col2, col3)
> > >       VALUES (123, ?, ?)
> > > ");
> > > my $twig = XML::Twig->new(
> > >    twig_handlers => { PIT => sub {
> > >       my ($t, $product) = @_;
> > >       my $descricao = $product->first_child('pitName')->att('name');
> > >       my $preco = $product->first_child('pitPrice')->att('price');
> > >       $sth->bind_param(1, $descricao);
> > >       $sth->bind_param(2, $preco);
> > >       $sth->execute();
> > >       $sth->finish();
> > >       $t->purge;
> > >    }}
> > > );
> > > $twig->parseurl('file:///home/joenio/data/produtos.xml');
> > > $twig->purge;
> > > $dbh->disconnect();
> > >
> > > -----
> > >
> > > Alguem já enfrentou situação parecida?
> >
> >    Quando eu tive este erro, tinha fork() explícito envolvido.
> >    Mas faz muito tempo e muitas versões do DBI atrás.
> >    Talvez isso já não seja mais a causa do seu problema.
> >    Tente por favor conseguir mais informação sobre este processo
> > "extra" que você mencionou.
> >    Putamplexos!
> >
> > --
> > Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> > Perl fanatic evangelist, and amateur {cook, photographer}
> >
> >
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


-- 
Joenio Costa
- Salvador Perl Mongers - Grupo de Usuário Perl de Salvador
- Colibre - Cooperativa de Tecnologias Livres
- PSL-BA - Projeto Software Livre Bahia


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