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