sql >> Database >  >> RDS >> Oracle

Oracle verbinden met PostgreSQL

De volgende instructies laten zien hoe u Oracle op Linux verbindt met PostgreSQL. Raadpleeg onze DG4ODBC-tutorial voor meer informatie over DG4ODBC.

  1. Download het 64-bits PostgreSQL ODBC-stuurprogramma voor Linux.
  2. 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.

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

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

  6. 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"
    
  7. Reageer op de regel die DG4ODBC-tracering mogelijk maakt. Bijvoorbeeld:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  8. 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)
       )
     )
    
  9. 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.

  10. Start (of herstart) de Oracle Listener. Bijvoorbeeld:
    lsnrctl stop
    lsnrctl start
    
  11. Maak verbinding met uw Oracle-database in SQL*Plus.
  12. 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 regel HS_FDS_TRACE_LEVEL = DEBUG toe naar initpostgresql.ora en start / herstart vervolgens de Oracle-listener. Als de log 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 ().

  1. FOUT:niet-beëindigde tekenreeks tussen aanhalingstekens op of nabij

  2. Python-woordenboek invoegen met Psycopg2

  3. Hoe de Sign()-functie werkt in PostgreSQL

  4. Benchmarking databases 101 - deel 1