Foros del Web » Programación para mayores de 30 ;) » Programación General »

Conexión de perl con una BD Oracle remota

Estas en el tema de Conexión de perl con una BD Oracle remota en el foro de Programación General en Foros del Web. Hola a todos, me gustaria saber si alguien sabe como conectar una base de datos de Oracle que se encuentra en un servidor remoto con ...
  #1 (permalink)  
Antiguo 20/09/2006, 14:08
 
Fecha de Ingreso: septiembre-2006
Ubicación: Colombia
Mensajes: 17
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Conexión de perl con una BD Oracle remota

Hola a todos, me gustaria saber si alguien sabe como conectar una base de datos de Oracle que se encuentra en un servidor remoto con una alicación perl que corre localmnte. Gracias.
  #2 (permalink)  
Antiguo 20/09/2006, 14:33
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Hola, fijate que en PERL te conectas con el módulo DBI a cualquier base de datos de cualquier servidor, tenés que pasarle los parámetros correctos y ya...

Al pasarle el parámetro del driver de la base de datos, tienes que previamente tenerlo instalado en la PC donde se ejecuta el script para que funcione...

El el parámetro host colocás la IP del servidor de la base de datos y ya...

http://search.cpan.org/~timb/DBI-1.52/DBI.pm
http://search.cpan.org/~pythian/DBD-....18a/Oracle.pm

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 20/09/2006, 14:41
 
Fecha de Ingreso: septiembre-2006
Ubicación: Colombia
Mensajes: 17
Antigüedad: 17 años, 8 meses
Puntos: 0
Hola, gracias por tu respuesta. Mira lo que pasa es que yo tengo instalados los módulos DBI de Oracle en la maquina en la cual se ejecutan los scripts de Perl, pero al ejecutar sale en el archivo de error de apache el siguiente error:

Perhaps the capitalisation of DBD 'oracle' isn't right. at ConectarDB_O.pm line 15

La conexión a la BD la estoy haciendo mediante un modulo llamado ConectarDB_O.pm.

Si me puedes ayudar, te agradeceria.
  #4 (permalink)  
Antiguo 20/09/2006, 18:17
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
mostrame el código del conectarDB_O, sobretodo en la línea 15 o las anteriores...

Y fijate que además del DBI tienes que tener el DBD::Oracle que es el driver...

Si lo tienes muéstranos el código fuente del script...Sino no podría saber cual es el problema...

Saludos
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 21/09/2006, 13:24
 
Fecha de Ingreso: septiembre-2006
Ubicación: Colombia
Mensajes: 17
Antigüedad: 17 años, 8 meses
Puntos: 0
Mira aqui te envio dos intentos que he hecho para tratar de conectarme con la BD Oracle. El primero es un módulo de perl en el cual estoy definiendo la conexión. El segundo es un script completo en el cual estoy definiendo tanto la conexión como la consulta de la BD. Cualquier ayuda se las agradezco.

Ejercicio de prueba 1:

#!/usr/bin/perl -w
package ConectarDB_O;
use strict;
use DBI;
# variables a editar
my $db_user = "curso3";
my $db_pass = "curso3";
my $host_name = "mig";
my $db_name = "sbmig";
# vars

my $q_string = "DBI:oracle:host=$host_name;sid=mig;port=1521;data base=$db_name";

sub connect{
return (DBI->connect ($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
1;


Ejercicio de prueba 2:

#!c:\perl\bin\perl.exe -w
$qry = new CGI;
print header();
print start_html();
use strict;
use DBI;
#$dbh = DBI->connect('dbi:Oracle:host=mig;sid=sbmig;port:1521' ,'curso3','curso3','');
$dbh = DBI->connect('dbi:Oracle:', q{curso3/curso3@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST= mig)(PORT=1521))
(CONNECT_DATA=(SID=sbmig)))}, "")


$sth = $dbh->prepare ("SELECT * FROM empleados WHERE cargo=?");

$cia = $qry->param ("PRESIDENTE");


$sth->execute ($cia ) ;


while(@consulta=$sth->fetchrow_array()){
print "Id: ".$consulta[0]." Nombre: ".$consulta[1]." Apellido: ".$consulta[2]." Direccion: ".$consulta[3]." Telefono: ".$consulta[4];
}
$sth->finish;

print end_html();

PD: Hago la aclaración que tengo instalado el modulo de perl DBD::Oracle. Gracias
  #6 (permalink)  
Antiguo 21/09/2006, 14:24
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
host=mig

mig es un host ? o ponés el IP ahí ? porque si es un host faltaría el dominio de la red...

y en $dbh = DBI->connect('dbi:Oracle:host=mig;sid=sbmig;port:152 1' ,'curso3','curso3','');

Está mal, es

dbi:DriverName:database=database_name;host=hostnam e;port=port

No puedes cambiar de lugar el host con la database...

checkea bien como conectarte en

http://search.cpan.org/~timb/DBI-1.52/DBI.pm#connect

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 22/09/2006, 11:31
 
Fecha de Ingreso: septiembre-2006
Ubicación: Colombia
Mensajes: 17
Antigüedad: 17 años, 8 meses
Puntos: 0
Hola, muchas gracias por tu ayuda, efectivamente tenia mal el orden de las cosas y me faltaba agregarle el dominio al host. Igual subo el modulo de perl para la conexión con Oracle, depronto puede ser de gran ayuda para alguien mas que tenga el mismo problema que yo. Miles de gracias....

ConectarDB_O.pm

#!/usr/bin/perl -w
package ConectarDB_O;
use strict;
use DBI;
# variables a editar
my $db_user = "curso3";
my $db_pass = "curso3";
my $host_name = "mig.isb.com";
my $db_name = "sbmig";
my $sid = "sbmig";
# vars

my $q_string = "DBI:Oracle:database=$db_name;host=$host_name;sid= $sid;port=1521";

sub connect{
return (DBI->connect ($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
1;


Consultar_O.pl

#!c:\perl\bin\perl.exe -w
use CGI qw/:all/;
use ConectarDB_O;
print header();
print start_html();
my($dbh,$sth);
$dbh=ConectarDB_O->connect();
$sth=$dbh->prepare('SELECT * FROM empleados WHERE cargo=?');
$sth->execute("PRESIDENTE");
while(@consulta=$sth->fetchrow_array()){
print "Id: ".$consulta[0]." Nombre: ".$consulta[1]." Apellido: ".$consulta[2]." Direccion: ".$consulta[3]." Telefono: ".$consulta[4];
}
$sth->finish;
$dbh->disconnect;
print end_html();
  #8 (permalink)  
Antiguo 22/09/2006, 12:35
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Muchas gracias por mostrar tu código fuente funcionando !!!

Saludos
__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:37.