Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verbinden von Oracle mit PostgreSQL

Die folgende Anleitung zeigt Ihnen, wie Sie Oracle unter Linux mit PostgreSQL verbinden. Weitere Informationen zu DG4ODBC finden Sie in unserem DG4ODBC-Tutorial.

  1. Laden Sie den 64-Bit-PostgreSQL-ODBC-Treiber für Linux herunter.
  2. Installieren und lizenzieren Sie den PostgreSQL-ODBC-Treiber auf dem Computer, auf dem Oracle installiert ist.

    Installationsanweisungen finden Sie in der ODBC-Treiberdokumentation.

    Hinweis Sie müssen den unixODBC-Treibermanager auf Ihrem Computer installieren. Die Easysoft-Distribution enthält eine Version des unixODBC-Treibermanagers, mit dem der Easysoft PostgreSQL-ODBC-Treiber getestet wurde. Das Setup-Programm des Easysoft-Treibers bietet Ihnen die Möglichkeit, unixODBC zu installieren.

  3. Erstellen Sie eine ODBC-Datenquelle in /etc/odbc.ini, die eine Verbindung zu der PostgreSQL-Datenbank herstellt, auf die Sie von Oracle aus zugreifen möchten. Beispiel:
    [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. Verwenden Sie isql, um die neue Datenquelle zu testen. Beispiel:
    cd /usr/local/easysoft/unixODBC/bin
    ./isql.sh -v POSTGRESQL_SAMPLE
    

    Geben Sie an der Eingabeaufforderung „help“ ein, um eine Liste mit Tabellen anzuzeigen. Drücken Sie zum Beenden die Eingabetaste in einer leeren Eingabeaufforderungszeile.

    Wenn Sie keine Verbindung herstellen können, finden Sie Hilfe in diesem Artikel.

  5. Erstellen Sie eine DG4ODBC-Init-Datei. Wechseln Sie dazu in den hs/admin Unterverzeichnis. Beispiel:
    cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
    

    Erstellen Sie eine Kopie der Datei initdg4odbc.ora . Benennen Sie die neue Datei initpostgresql.ora .

  6. Stellen Sie sicher, dass diese Parameter und Werte in Ihrer Init-Datei vorhanden sind:
    HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
    

    Ersetzen Sie my_postgresql_odbc_dsn mit dem Namen einer PostgreSQL-ODBC-Treiberdatenquelle, die eine Verbindung zum PostgreSQL-Zielserver herstellt. Zum Beispiel

    HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
    
  7. Kommentieren Sie die Zeile aus, die die DG4ODBC-Ablaufverfolgung aktiviert. Beispiel:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  8. Fügen Sie einen Eintrag zu listener.ora hinzu die einen SID_NAME für DG4ODBC erstellt. Zum Beispiel:
    SID_LIST_LISTENER =
     (SID_LIST =
       (SID_DESC=
         (SID_NAME=postgresql)
         (ORACLE_HOME=$ORACLE_HOME)
         (PROGRAM=dg4odbc)
       )
     )
    
  9. Fügen Sie einen DG4ODBC-Eintrag zu tnsnames.ora hinzu die den im vorherigen Schritt erstellten SID_NAME angibt. Zum Beispiel:
    POSTGRESQL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521))
        (CONNECT_DATA =
          (SID = postgresql)
        )
        (HS = OK)
      )
    

    Ersetzen Sie oracle_host durch den Hostnamen Ihres Oracle-Rechners.

  10. Starten (oder starten) Sie den Oracle Listener. Beispiel:
    lsnrctl stop
    lsnrctl start
    
  11. Verbinden Sie sich mit Ihrer Oracle-Datenbank in SQL*Plus.
  12. Erstellen Sie in SQL*Plus einen Datenbanklink für den PostgreSQL-Zielserver. Zum Beispiel:
    CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO
    "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql';
    SELECT * from employees@postgresqllink
    
Notizen
  • Wenn Sie Probleme beim Herstellen einer Verbindung zu PostgreSQL von Oracle haben, aktivieren Sie die DG4ODBC-Ablaufverfolgung und überprüfen Sie die Ablaufverfolgungsdateien, die in hs/log geschrieben werden Verzeichnis. Um die DG4ODBC-Ablaufverfolgung zu aktivieren, fügen Sie die Zeile HS_FDS_TRACE_LEVEL = DEBUG hinzu zu initpostgresql.ora und starten / starten Sie dann den Oracle-Listener neu. Wenn das log Verzeichnis existiert nicht, erstellen Sie es. Beispiel:
    mkdir log
    chmod +w log
    
  • Wenn Sie den Fehler „ORA-00997:illegal use of LONG datatype“ erhalten, fügen Sie einen der folgenden Einträge zu Ihrer ODBC-Datenquelle hinzu:
    DisguiseLong=1 # For non-Wide PostgreSQL long columns
    LimitLong=size in bytes # If this value is too big you will get ORA-00997

    –Oder–

    DisguiseWlong=1
    LimitLong=size in bytes# If this value is too big you will get ORA-00997
  • Wenn Sie beim Arbeiten mit PostgreSQL-Daten in Oracle „ORA-28562:Heterogeneous Services data truncation error“ erhalten, haben wir möglicherweise eine Problemumgehung für Sie, aber Sie müssen die Auswirkungen ihrer Verwendung verstehen. Wenden Sie sich für weitere Informationen an das Easysoft Support-Team ().