From: | <juanudo(at)galeon(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | DBI-LINK |
Date: | 2005-11-30 19:52:46 |
Message-ID: | web-743842@hispavista.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Buenas días lista, siguiendo los consejos de
Alvaro estoy intentando el "select" a través de
postgresql a otro RDBMS de la sigueinte forma:
prueba_posgresql=# SELECT t.nombre,t.cedula FROM
dbi_link.remote_select
'dbi:Oracle:host=IP;sid=OEMREP;port=1521','prueba','prueba',NULL,
'select nombre,cedula from usuarios') t(nombre
varchar,cedula varchar);
A lo cual el postgresql responde de la siguiente
forma:
ERROR: error from Perl function: Could not
connect to database data source:
dbi:Oracle:host=IP;sid=OEMREP;port=1521
user: prueba
password: prueba
attributes: (UNKNOWN OCI STATUS 1804)
OCIInitialize. Check ORACLE_HOME and NLS
settings etc. at (eval 1) line 111.
Entiendo que el error es que la función de Perl
no logra conectarse a la BD, y es aquí donde se
presenta el problema. Intento la conexión
directa vía Perl al otro RDBMS de la siguiente
forma:
use strict;
use DBI;
use DBD::Oracle qw(:ora_types);
my $dbh = DBI->connect(
'dbi:Oracle:host=IP;sid=OEMREP;port=1521','prueba','prueba',
{RaiseError=> 1,AutoCommit => 0}) or die
"Database connection not made:". $DBI::errstr;
my $sql = qq{select nombre,cedula from
usuarios};
my $sth = $dbh->prepare( $sql ) or die "Couldn't
prepare statement: " . $dbh->errstr;
$sth->execute() or die "Couldn't execute
statement: " . $sth->errstr;
my( $nombre,$cedula);
$sth->bind_columns(\$nombre,\$cedula);
while( $sth->fetch() ) {
print "$nombre,$cedula\n";
}
$sth->finish();
$dbh->disconnect();
...la conexion y el "select" se realiza sin
ningun problema.
Tengo entendido que el error "(UNKNOWN OCI
STATUS 1804) OCIInitialize. Check ORACLE_HOME
and NLS settings etc. at (eval 1) line 111." se
da por que el usuario que se esta conectado al
ORACLE no existe o las variables ORACLE_HOME y
NLS no estan seteadas pero debo aclarar que esto
no es asi, el usuario existe y se conecta
normalmente usando la
funcion de Perl directamente sobre el ORACLE.
Entiendo que cuando hago la conexion
directamente con DBI a Oracle es ese mismo
proceso el que necesita las
variables ORACLE_HOME y demas, pero si lo hago
con BDI-Link, quien necesita tener las variables
definidas es el "backend" de Postgres, el cual a
su vez las hereda desde el Postmaster. Para
estar seguro de que el "backend" tenga las
variables correctas he bajado el Postgres y
seteado todas las variables necesarias
manualmente, pero el problema sigue sin
resolverse.
Atentamente, Juan Mosqueda.
Constructor de Exitos.
Te alcanzan tus ingresos? te invito a
desarrollar
-----------------------------------------------------------------------------------
Di adios a los virus y a los pop-ups
http://barra.hispavista.com/hispavista/cargar.html
-----------------------------------------------------------------------------------
¿Conoces eBay, el mayor centro de compra y venta en internet?
M?viles, port?les, pda´s, cd´s, c?ras digitales, videocamaras...
¡Compra ahora a los mejores precios! http://ebay.hispavista.com/
-----------------------------------------------------------------------------------
¿Compras por internet?
http://compras.hispavista.es/
-----------------------------------------------------------------------------------
- Correo seguro con tecnolog?Panda Software
From | Date | Subject | |
---|---|---|---|
Next Message | Roberto Andrade Fonseca | 2005-11-30 22:28:47 | Curso de PL/pgSQL en la Ciudad de México |
Previous Message | Jaime Casanova | 2005-11-30 19:36:36 | Re: Otra consulta |