Le seguenti istruzioni mostrano come connettere Oracle su Linux a PostgreSQL. Per ulteriori informazioni su DG4ODBC, fare riferimento al nostro tutorial DG4ODBC.
- Scarica il driver ODBC PostgreSQL a 64 bit per Linux.
- 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.
- 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
- 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.
- 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 fileinitpostgresql.ora
. - 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"
- Commenta la riga che abilita il tracciamento DG4ODBC. Ad esempio:
#HS_FDS_TRACE_LEVEL = <trace_level>
- 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) ) )
- 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.
- Avvia (o riavvia) Oracle Listener. Ad esempio:
lsnrctl stop lsnrctl start
- Connettiti al tuo database Oracle in SQL*Plus.
- 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 rigaHS_FDS_TRACE_LEVEL = DEBUG
ainitpostgresql.ora
e quindi avviare/riavviare il listener Oracle. Se illog
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 ().