Oracle
 sql >> Base de données >  >> RDS >> Oracle

Connecter Oracle à PostgreSQL

Les instructions suivantes vous montrent comment connecter Oracle sur Linux à PostgreSQL. Pour plus d'informations sur DG4ODBC, consultez notre tutoriel DG4ODBC.

  1. Téléchargez le pilote ODBC PostgreSQL 64 bits pour Linux.
  2. Installez et mettez sous licence le pilote ODBC PostgreSQL sur la machine sur laquelle Oracle est installé.

    Pour obtenir des instructions d'installation, consultez la documentation du pilote ODBC.

    Remarque Le gestionnaire de pilotes unixODBC doit être installé sur votre machine. La distribution Easysoft inclut une version du gestionnaire de pilotes unixODBC avec lequel le pilote ODBC Easysoft PostgreSQL a été testé. Le programme d'installation du pilote Easysoft vous offre la possibilité d'installer unixODBC.

  3. Créez une source de données ODBC dans /etc/odbc.ini qui se connecte à la base de données PostgreSQL à laquelle vous souhaitez accéder depuis Oracle. Par exemple :
    [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. Utilisez isql pour tester la nouvelle source de données. Par exemple :
    cd /usr/local/easysoft/unixODBC/bin
    ./isql.sh -v POSTGRESQL_SAMPLE
    

    À l'invite, tapez "help" pour afficher une liste de tables. Pour quitter, appuyez sur retour dans une ligne d'invite vide.

    Si vous ne parvenez pas à vous connecter, consultez cet article pour obtenir de l'aide.

  5. Créez un fichier init DG4ODBC. Pour cela, passez au hs/admin sous-répertoire. Par exemple :
    cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
    

    Créez une copie du fichier initdg4odbc.ora . Nommez le nouveau fichier initpostgresql.ora .

  6. Assurez-vous que ces paramètres et valeurs sont présents dans votre fichier init :
    HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
    

    Remplacez my_postgresql_odbc_dsn avec le nom d'une source de données de pilote ODBC PostgreSQL qui se connecte au serveur PostgreSQL cible. Par exemple

    HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
    
  7. Commentez la ligne qui active le traçage DG4ODBC. Par exemple :
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  8. Ajouter une entrée à listener.ora qui crée un SID_NAME pour DG4ODBC. Par exemple :
    SID_LIST_LISTENER =
     (SID_LIST =
       (SID_DESC=
         (SID_NAME=postgresql)
         (ORACLE_HOME=$ORACLE_HOME)
         (PROGRAM=dg4odbc)
       )
     )
    
  9. Ajouter une entrée DG4ODBC à tnsnames.ora qui spécifie le SID_NAME créé à l'étape précédente. Par exemple :
    POSTGRESQL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521))
        (CONNECT_DATA =
          (SID = postgresql)
        )
        (HS = OK)
      )
    

    Remplacez oracle_host avec le nom d'hôte de votre machine Oracle.

  10. Démarrez (ou redémarrez) l'écouteur Oracle. Par exemple :
    lsnrctl stop
    lsnrctl start
    
  11. Connectez-vous à votre base de données Oracle dans SQL*Plus.
  12. Dans SQL*Plus, créez un lien de base de données pour le serveur PostgreSQL cible. Par exemple :
    CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO
    "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql';
    SELECT * from employees@postgresqllink
    
Remarques
  • Si vous rencontrez des problèmes pour vous connecter à PostgreSQL depuis Oracle, activez le suivi DG4ODBC et vérifiez les fichiers de suivi écrits dans le hs/log annuaire. Pour activer le traçage DG4ODBC, ajoutez la ligne HS_FDS_TRACE_LEVEL = DEBUG à initpostgresql.ora puis démarrez / redémarrez l'écouteur Oracle. Si le log répertoire n'existe pas, créez-le. Par exemple :
    mkdir log
    chmod +w log
    
  • Si vous obtenez l'erreur "ORA-00997 :utilisation illégale du type de données LONG", ajoutez l'une des entrées suivantes à votre source de données ODBC :
    DisguiseLong=1 # For non-Wide PostgreSQL long columns
    LimitLong=size in bytes # If this value is too big you will get ORA-00997

    –Ou–

    DisguiseWlong=1
    LimitLong=size in bytes# If this value is too big you will get ORA-00997
  • Si vous obtenez "ORA-28562 :Erreur de troncation des données des services hétérogènes", lorsque vous travaillez avec des données PostgreSQL dans Oracle, nous pouvons vous proposer une solution de contournement, mais vous devez comprendre les implications de son utilisation. Pour plus d'informations, contactez l'équipe de support d'Easysoft ().