De volgende instructies laten zien hoe u Oracle op Linux verbindt met PostgreSQL. Raadpleeg onze DG4ODBC-tutorial voor meer informatie over DG4ODBC.
- Download het 64-bits PostgreSQL ODBC-stuurprogramma voor Linux.
- Installeer en licentieer het PostgreSQL ODBC-stuurprogramma op de computer waarop Oracle is geïnstalleerd.
Zie de documentatie van het ODBC-stuurprogramma voor installatie-instructies.
Opmerking U moet de unixODBC Driver Manager op uw computer hebben geïnstalleerd. De Easysoft-distributie bevat een versie van de unixODBC Driver Manager waarmee de Easysoft PostgreSQL ODBC-driver is getest. Het Easysoft driver setup programma geeft je de mogelijkheid om unixODBC te installeren.
- Maak een ODBC-gegevensbron in /etc/odbc.ini die verbinding maakt met de PostgreSQL-database waartoe u toegang wilt vanuit Oracle. Bijvoorbeeld:
[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
- Gebruik isql om de nieuwe gegevensbron te testen. Bijvoorbeeld:
cd /usr/local/easysoft/unixODBC/bin ./isql.sh -v POSTGRESQL_SAMPLE
Typ bij de prompt "help" om een lijst met tabellen weer te geven. Druk op Return in een lege promptregel om af te sluiten.
Als je geen verbinding kunt maken, raadpleeg dan dit artikel voor hulp.
- Maak een DG4ODBC init-bestand. Ga hiervoor naar de
hs/admin
submap. Bijvoorbeeld:cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
Maak een kopie van het bestand
initdg4odbc.ora
. Geef het nieuwe bestand de naaminitpostgresql.ora
. - Zorg ervoor dat deze parameters en waarden aanwezig zijn in uw init-bestand:
HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
Vervang my_postgresql_odbc_dsn met de naam van een PostgreSQL ODBC-stuurprogrammagegevensbron die verbinding maakt met de PostgreSQL-doelserver. Bijvoorbeeld
HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
- Reageer op de regel die DG4ODBC-tracering mogelijk maakt. Bijvoorbeeld:
#HS_FDS_TRACE_LEVEL = <trace_level>
- Voeg een item toe aan
listener.ora
dat maakt een SID_NAME voor DG4ODBC. Bijvoorbeeld:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=postgresql) (ORACLE_HOME=$ORACLE_HOME) (PROGRAM=dg4odbc) ) )
- Voeg een DG4ODBC-item toe aan
tnsnames.ora
die de SID_NAME specificeert die in de vorige stap is gemaakt. Bijvoorbeeld:POSTGRESQL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = postgresql) ) (HS = OK) )
Vervang oracle_host met de hostnaam van uw Oracle-machine.
- Start (of herstart) de Oracle Listener. Bijvoorbeeld:
lsnrctl stop lsnrctl start
- Maak verbinding met uw Oracle-database in SQL*Plus.
- Maak in SQL*Plus een databasekoppeling voor de doel-PostgreSQL-server. Bijvoorbeeld:
CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql'; SELECT * from employees@postgresqllink
Opmerkingen
- Als je problemen hebt om verbinding te maken met PostgreSQL vanuit Oracle, schakel dan DG4ODBC-tracering in en controleer de traceerbestanden die zijn geschreven naar de
hs/log
map. Om DG4ODBC-tracering in te schakelen, voegt u de regelHS_FDS_TRACE_LEVEL = DEBUG
toe naarinitpostgresql.ora
en start / herstart vervolgens de Oracle-listener. Als delog
directory bestaat niet, maak deze aan. Bijvoorbeeld:mkdir log chmod +w log
- Als u de fout "ORA-00997:illegaal gebruik van LONG-gegevenstype" krijgt, voegt u een van de volgende vermeldingen toe aan uw ODBC-gegevensbron:
DisguiseLong=1 # For non-Wide PostgreSQL long columns LimitLong=size in bytes # If this value is too big you will get ORA-00997
–Of–
DisguiseWlong=1 LimitLong=size in bytes# If this value is too big you will get ORA-00997
- Als u "ORA-28562:Heterogene services-gegevensafbrekingsfout" krijgt wanneer u met PostgreSQL-gegevens in Oracle werkt, hebben we mogelijk een oplossing voor u, maar u moet de implicaties van het gebruik ervan begrijpen. Neem voor meer informatie contact op met het Easysoft Support-team ().