Oracle
 sql >> Database >  >> RDS >> Oracle

Collegamento di Oracle a PostgreSQL

Le seguenti istruzioni mostrano come connettere Oracle su Linux a PostgreSQL. Per ulteriori informazioni su DG4ODBC, fare riferimento al nostro tutorial DG4ODBC.

  1. Scarica il driver ODBC PostgreSQL a 64 bit per Linux.
  2. Installa e concede in licenza il driver ODBC PostgreSQL sulla macchina in cui è installato Oracle.

    Per le istruzioni di installazione, vedere la documentazione del driver ODBC.

    Nota Hai bisogno di unixODBC Driver Manager installato sul tuo computer. La distribuzione Easysoft include una versione di unixODBC Driver Manager con cui è stato testato il driver ODBC Easysoft PostgreSQL. Il programma di installazione del driver Easysoft ti dà la possibilità di installare unixODBC.

  3. Crea un'origine dati ODBC in /etc/odbc.ini che si connetta al database PostgreSQL a cui desideri accedere da Oracle. Ad esempio:
    [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. Usa isql per testare la nuova origine dati. Ad esempio:
    cd /usr/local/easysoft/unixODBC/bin
    ./isql.sh -v POSTGRESQL_SAMPLE
    

    Al prompt, digita "help" per visualizzare un elenco di tabelle. Per uscire, premi Invio in una riga di prompt vuota.

    Se non riesci a connetterti, fai riferimento a questo articolo per assistenza.

  5. Crea un file di inizializzazione DG4ODBC. Per fare ciò, cambia in hs/admin sottodirectory. Ad esempio:
    cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
    

    Crea una copia del file initdg4odbc.ora . Assegna un nome al nuovo file initpostgresql.ora .

  6. Assicurati che questi parametri e valori siano presenti nel tuo file init:
    HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
    

    Sostituisci my_postgresql_odbc_dsn con il nome di un'origine dati del driver ODBC PostgreSQL che si connette al server PostgreSQL di destinazione. Ad esempio

    HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
    
  7. Commenta la riga che abilita il tracciamento DG4ODBC. Ad esempio:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  8. Aggiungi una voce a listener.ora che crea un SID_NAME per DG4ODBC. Ad esempio:
    SID_LIST_LISTENER =
     (SID_LIST =
       (SID_DESC=
         (SID_NAME=postgresql)
         (ORACLE_HOME=$ORACLE_HOME)
         (PROGRAM=dg4odbc)
       )
     )
    
  9. Aggiungi una voce DG4ODBC a tnsnames.ora che specifica il SID_NAME creato nel passaggio precedente. Ad esempio:
    POSTGRESQL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521))
        (CONNECT_DATA =
          (SID = postgresql)
        )
        (HS = OK)
      )
    

    Sostituisci oracle_host con il nome host della tua macchina Oracle.

  10. Avvia (o riavvia) Oracle Listener. Ad esempio:
    lsnrctl stop
    lsnrctl start
    
  11. Connettiti al tuo database Oracle in SQL*Plus.
  12. In SQL*Plus, crea un collegamento al database per il server PostgreSQL di destinazione. Ad esempio:
    CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO
    "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql';
    SELECT * from employees@postgresqllink
    
Note
  • Se hai problemi di connessione a PostgreSQL da Oracle, abilita la traccia DG4ODBC e controlla i file di traccia scritti in hs/log directory. Per abilitare il tracciamento DG4ODBC, aggiungi la riga HS_FDS_TRACE_LEVEL = DEBUG a initpostgresql.ora e quindi avviare/riavviare il listener Oracle. Se il log directory non esiste, crearla. Ad esempio:
    mkdir log
    chmod +w log
    
  • Se ricevi l'errore "ORA-00997:uso illegale di tipo di dati LONG", aggiungi una delle seguenti voci all'origine dati ODBC:
    DisguiseLong=1 # For non-Wide PostgreSQL long columns
    LimitLong=size in bytes # If this value is too big you will get ORA-00997

    –Oppure–

    DisguiseWlong=1
    LimitLong=size in bytes# If this value is too big you will get ORA-00997
  • Se ricevi "ORA-28562:Errore di troncamento dei dati di servizi eterogenei", quando lavori con i dati PostgreSQL in Oracle, potremmo avere una soluzione alternativa per te, ma è necessario comprendere le implicazioni del suo utilizzo. Per ulteriori informazioni, contattare il team di supporto Easysoft ().