Las siguientes instrucciones le muestran cómo conectar Oracle en Linux a PostgreSQL. Para obtener más información sobre DG4ODBC, consulte nuestro tutorial de DG4ODBC.
- Descargue el controlador ODBC de PostgreSQL de 64 bits para Linux.
- Instale y obtenga la licencia del controlador ODBC de PostgreSQL en la máquina donde está instalado Oracle.
Para obtener instrucciones de instalación, consulte la documentación del controlador ODBC.
Nota Necesita el administrador de controladores unixODBC instalado en su máquina. La distribución de Easysoft incluye una versión de unixODBC Driver Manager con la que se ha probado el controlador ODBC de Easysoft PostgreSQL. El programa de instalación del controlador Easysoft le ofrece la opción de instalar unixODBC.
- Cree una fuente de datos ODBC en /etc/odbc.ini que se conecte a la base de datos PostgreSQL a la que desea acceder desde Oracle. Por ejemplo:
[POSTGRES_SAMPLE] Driver=Easysoft ODBC-Postgres Server Description=Easysoft ODBC-Postgres Server Server=192.0.2.1 Port=5432 Database=employees User=postgres Password=p4550rd Logging=No LogFile= Encrypt=No
- Utilice isql para probar la nueva fuente de datos. Por ejemplo:
cd /usr/local/easysoft/unixODBC/bin ./isql.sh -v POSTGRESQL_SAMPLE
Cuando se le solicite, escriba "ayuda" para mostrar una lista de tablas. Para salir, presione regresar en una línea de aviso vacía.
Si no puede conectarse, consulte este artículo para obtener ayuda.
- Cree un archivo de inicio DG4ODBC. Para hacer esto, cambie a
hs/admin
subdirectorio. Por ejemplo:cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
Crea una copia del archivo
initdg4odbc.ora
. Nombre el nuevo archivoinitpostgresql.ora
. - Asegúrese de que estos parámetros y valores estén presentes en su archivo de inicio:
HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
Reemplace my_postgresql_odbc_dsn con el nombre de un origen de datos del controlador ODBC de PostgreSQL que se conecta al servidor PostgreSQL de destino. Por ejemplo
HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
- Comente la línea que habilita el seguimiento de DG4ODBC. Por ejemplo:
#HS_FDS_TRACE_LEVEL = <trace_level>
- Añadir una entrada a
listener.ora
que crea un SID_NAME para DG4ODBC. Por ejemplo:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=postgresql) (ORACLE_HOME=$ORACLE_HOME) (PROGRAM=dg4odbc) ) )
- Agregue una entrada DG4ODBC a
tnsnames.ora
que especifica el SID_NAME creado en el paso anterior. Por ejemplo:POSTGRESQL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = postgresql) ) (HS = OK) )
Reemplazar oracle_host con el nombre de host de su máquina Oracle.
- Inicie (o reinicie) Oracle Listener. Por ejemplo:
lsnrctl stop lsnrctl start
- Conéctese a su base de datos Oracle en SQL*Plus.
- En SQL*Plus, cree un enlace de base de datos para el servidor PostgreSQL de destino. Por ejemplo:
CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql'; SELECT * from employees@postgresqllink
Notas
- Si tiene problemas para conectarse a PostgreSQL desde Oracle, habilite el rastreo DG4ODBC y verifique los archivos de rastreo escritos en
hs/log
directorio. Para habilitar el rastreo DG4ODBC, agregue la líneaHS_FDS_TRACE_LEVEL = DEBUG
ainitpostgresql.ora
y luego inicie/reinicie Oracle listener. Si ellog
El directorio no existe, créalo. Por ejemplo:mkdir log chmod +w log
- Si obtiene el error "ORA-00997:uso ilegal de tipo de datos LONG", agregue una de las siguientes entradas a su fuente de datos ODBC:
DisguiseLong=1 # For non-Wide PostgreSQL long columns LimitLong=size in bytes # If this value is too big you will get ORA-00997
–O–
DisguiseWlong=1 LimitLong=size in bytes# If this value is too big you will get ORA-00997
- Si obtiene "ORA-28562:error de truncamiento de datos de servicios heterogéneos", cuando trabaja con datos de PostgreSQL en Oracle, es posible que tengamos una solución para usted, pero debe comprender las implicaciones de su uso. Para obtener más información, comuníquese con el equipo de soporte de Easysoft ().