Skip site navigation (1) Skip section navigation (2)

DBI-LINK

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 (view raw or flat)
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



pgsql-es-ayuda by date

Next:From: Roberto Andrade FonsecaDate: 2005-11-30 22:28:47
Subject: Curso de PL/pgSQL en la Ciudad de México
Previous:From: Jaime CasanovaDate: 2005-11-30 19:36:36
Subject: Re: Otra consulta

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group