[caracas-pm] caracas-pm Digest, Vol 39, Issue 7

Daniel Rojas danielrojasm at gmail.com
Wed Aug 22 12:39:03 PDT 2007


Que tal Ernesto, gracias por tu respuesta, el ejemplo que coloque lo puse a
manera de referencia y de manera simple para ilustrar el error, ya que el
programa original es mas extenso, ya he probado Class::DBI y DBIx::Class y
ambos arrojan el mismo error que publique con el Oracle, la consulta que
hago deberia traer solo 14 registros, pero cabe mencionar que la tabla
contiene 1.6 millones de registros, no se si eso influye, porque como les
habia dicho hay una tabla mas pequeña a la cual he consultado sin tener ese
problema, otra cosa es que la tabla que me da problemas no posee ni primary
key, ni claves foraneas, ni indices, en el sqlplus funciona, pero en perl me
da ese error, no si sea algun parametro que el Oracle necesita en el
conection string o algun flag, buffer etc., agradeciendo su ayuda se
despide, Daniel Rojas.



El día 22/08/07, caracas-pm-request at pm.org <caracas-pm-request at pm.org>
escribió:
>
> Send caracas-pm mailing list submissions to
>         caracas-pm at pm.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://mail.pm.org/mailman/listinfo/caracas-pm
> or, via email, send a message with subject or body 'help' to
>         caracas-pm-request at pm.org
>
> You can reach the person managing the list at
>         caracas-pm-owner at pm.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of caracas-pm digest..."
>
>
> Today's Topics:
>
>    1. Problema al conectarme con Oracle 8i y DBI (Daniel Rojas)
>    2. Problema al conectarme con Oracle 8i y DBI (Daniel Rojas)
>    3. Re: Problema al conectarme con Oracle 8i y DBI
>       (Ernesto Hernandez-Novich)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 22 Aug 2007 12:02:01 -0400
> From: "Daniel Rojas" <danielrojasm at gmail.com>
> Subject: [caracas-pm] Problema al conectarme con Oracle 8i y DBI
> To: caracas-pm at pm.org
> Message-ID:
>         <abcce59e0708220902y5b11d998jc55580129acbc5eb at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Buenas amigos les escribo en la oportunidad de comentarles un problema que
> tengo al conectarme a un servidor Oracle 8i, es una conexion sencilla
> donde
> consulto una tabla, el problema es que cuando acceso a tablas con pocos
> registros, me trae los datos pero cuando acceso a una tabla que contiene
> 1.638.237 registros, se queda como 20 segundos esperando y a la final
> arroja
> un error
>
> este es el string de
> conexion:---------------------------------------------------------
>
> prueba2.pl:
>
> use strict;
> use DBI;
>
> my $dbh = DBI->connect( 'dbi:Oracle:ADIN',
>                         'myusuario',
>                         'myclave',
>                         {
>                           RaiseError => 1,
>                           AutoCommit => 0
>                         }
>                       ) || die "Database connection not made:
> $DBI::errstr";
>
> my $sql = qq{ SELECT * FROM gl_balances where set_of_books_id = 344 and
> code_combination_id = 166823 and currency_code = 'VEB'};
> my $sth = $dbh->prepare( $sql );
> $sth->execute();
>
> print $sth;
>
> $dbh->disconnect();
>
>
> este es el error que obtengo despues de 20 segundos de
> espera:-----------------------------
>
>
> DBD::Oracle::st execute failed: ORA-03113: fin de archivo en el canal de
> comunicaci?n (DBD ERROR: OCIStmtExecute) [for Statement " SELECT * FROM
> gl_balances where set_of_books_id = 344 and code_combination_id = 166823
> and
> currency_code = 'VEB'"] at prueba2.pl line 15.
>
> A simple vista pudiera parecer un problema del servidor pero el DBA reviso
> la configuracion del servidor y todo parece estar correcto, y ademas
> cuando
> hago cualquier consulta con sqlplus en consola todo funciona bien, el
> problema es con perl, el cliente Oracle esta bien instalado y configurado,
> que me sugieren uds?, gracias de antemano.
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://mail.pm.org/pipermail/caracas-pm/attachments/20070822/1bfdfed4/attachment.htm
>
> ------------------------------
>
> Message: 2
> Date: Wed, 22 Aug 2007 12:02:01 -0400
> From: "Daniel Rojas" <danielrojasm at gmail.com>
> Subject: [caracas-pm] Problema al conectarme con Oracle 8i y DBI
> To: caracas-pm at pm.org
> Message-ID:
>         <abcce59e0708220902y5b11d998jc55580129acbc5eb at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Buenas amigos les escribo en la oportunidad de comentarles un problema que
> tengo al conectarme a un servidor Oracle 8i, es una conexion sencilla
> donde
> consulto una tabla, el problema es que cuando acceso a tablas con pocos
> registros, me trae los datos pero cuando acceso a una tabla que contiene
> 1.638.237 registros, se queda como 20 segundos esperando y a la final
> arroja
> un error
>
> este es el string de
> conexion:---------------------------------------------------------
>
> prueba2.pl:
>
> use strict;
> use DBI;
>
> my $dbh = DBI->connect( 'dbi:Oracle:ADIN',
>                         'myusuario',
>                         'myclave',
>                         {
>                           RaiseError => 1,
>                           AutoCommit => 0
>                         }
>                       ) || die "Database connection not made:
> $DBI::errstr";
>
> my $sql = qq{ SELECT * FROM gl_balances where set_of_books_id = 344 and
> code_combination_id = 166823 and currency_code = 'VEB'};
> my $sth = $dbh->prepare( $sql );
> $sth->execute();
>
> print $sth;
>
> $dbh->disconnect();
>
>
> este es el error que obtengo despues de 20 segundos de
> espera:-----------------------------
>
>
> DBD::Oracle::st execute failed: ORA-03113: fin de archivo en el canal de
> comunicaci?n (DBD ERROR: OCIStmtExecute) [for Statement " SELECT * FROM
> gl_balances where set_of_books_id = 344 and code_combination_id = 166823
> and
> currency_code = 'VEB'"] at prueba2.pl line 15.
>
> A simple vista pudiera parecer un problema del servidor pero el DBA reviso
> la configuracion del servidor y todo parece estar correcto, y ademas
> cuando
> hago cualquier consulta con sqlplus en consola todo funciona bien, el
> problema es con perl, el cliente Oracle esta bien instalado y configurado,
> que me sugieren uds?, gracias de antemano.
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://mail.pm.org/pipermail/caracas-pm/attachments/20070822/1bfdfed4/attachment-0001.htm
>
> ------------------------------
>
> Message: 3
> Date: Wed, 22 Aug 2007 12:22:48 -0400
> From: Ernesto Hernandez-Novich <emhnemhn at gmail.com>
> Subject: Re: [caracas-pm] Problema al conectarme con Oracle 8i y DBI
> To: Perl Mongers Caracas - Venezuela <caracas-pm at pm.org>
> Message-ID: <1187799768.4994.8.camel at trillian.ius.cc>
> Content-Type: text/plain; charset=UTF-8
>
> On Wed, 2007-08-22 at 12:02 -0400, Daniel Rojas wrote:
> > Buenas amigos les escribo en la oportunidad de comentarles un problema
> > que tengo al conectarme a un servidor Oracle 8i, es una conexion
> > sencilla donde consulto una tabla, el problema es que cuando acceso a
> > tablas con pocos registros, me trae los datos pero cuando acceso a una
> > tabla que contiene 1.638.237 registros, se queda como 20 segundos
> > esperando y a la final arroja un error
> >
> > este es el string de
> > conexion:---------------------------------------------------------
> >
> > prueba2.pl:
> >
> > use strict;
> > use DBI;
> >
> > my $dbh = DBI->connect( 'dbi:Oracle:ADIN',
> >                         'myusuario',
> >                         'myclave',
> >                         {
> >                           RaiseError => 1,
> >                           AutoCommit => 0
> >                         }
> >                       ) || die "Database connection not made:
> > $DBI::errstr";
> >
> > my $sql = qq{ SELECT * FROM gl_balances where set_of_books_id = 344
> > and    code_combination_id = 166823 and currency_code = 'VEB'};
> > my $sth = $dbh->prepare( $sql );
>
> Si la instrucci?n SQL es est?tica, no tiene mayor sentido prepararla. Si
> piensas utilizar la misma instrucci?n SQL para varias consultas,
> entonces deber?as tener placeholders (?) en lugar de los valores
> concretos (344, 166823 y 'VEB') y luego llamar al execute() con esos
> par?metros.
>
> > $sth->execute();
>
> Completando el comentario anterior, el SQL deber?a ser parametrizado con
> placeholders y ejecutar
>
> $sth->execute(344,166823,'VEB');
>
> Hasta aqu?, todo bien.
>
> > print $sth;
>
> No se hace "print $sth". Hacer eso (si te fijaste en el manual) es
> equivalente a solicitar UN string con TODOS los registros. UN string...
> TODOS los registros... Eso no es razonable cuando tienes muchos
> registros por razones (espero obvias) de consumo de memoria.
>
> Lo que quieres hacer es iterar sobre los resultados para procesarlos
> fila por fila
>
> while ( my @fila = $sth->fetchrow_array ) {
>   # @fila contiene todos los campos de una fila
> }
>
> Vuelve a leer los manuales de DBI, porque precisamente al comienzo est?n
> los ejemplos de uso para un SELECT, independientemente del n?mero de
> filas a retornar.
>
> Hoy en d?a hay muy pocas razones para utilizar DBI directamente. Es
> preferible que utilices un ORM como DBIx::Class para tus operaciones de
> SQL de manera que nunca tengas que escribir SQL y as?, detalles como los
> que mencion? de preparar, parametrizar e iterar, sean manejados por una
> librer?a en lugar de tener que recordarlos cada vez.
> --
> Ernesto Hern?ndez-Novich - Linux 2.6.18 i686 - Unix: Live free or die!
> Geek by nature, Linux by choice, Debian of course.
> If you can't aptitude it, it isn't useful or doesn't exist.
> GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3
>
>
>
> ------------------------------
>
> _______________________________________________
> caracas-pm mailing list
> caracas-pm at pm.org
> http://mail.pm.org/mailman/listinfo/caracas-pm
>
> End of caracas-pm Digest, Vol 39, Issue 7
> *****************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/caracas-pm/attachments/20070822/d0040e93/attachment.html 


More information about the caracas-pm mailing list