sql >> Base de Datos >  >> RDS >> Oracle

Conexión de Oracle a PostgreSQL

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.

  1. Descargue el controlador ODBC de PostgreSQL de 64 bits para Linux.
  2. 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.

  3. 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
    
  4. 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.

  5. 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 archivo initpostgresql.ora .

  6. 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"
    
  7. Comente la línea que habilita el seguimiento de DG4ODBC. Por ejemplo:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  8. 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)
       )
     )
    
  9. 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.

  10. Inicie (o reinicie) Oracle Listener. Por ejemplo:
    lsnrctl stop
    lsnrctl start
    
  11. Conéctese a su base de datos Oracle en SQL*Plus.
  12. 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ínea HS_FDS_TRACE_LEVEL = DEBUG a initpostgresql.ora y luego inicie/reinicie Oracle listener. Si el log 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 ().