Les instructions suivantes vous montrent comment connecter Oracle sur Linux à PostgreSQL. Pour plus d'informations sur DG4ODBC, consultez notre tutoriel DG4ODBC.
- Téléchargez le pilote ODBC PostgreSQL 64 bits pour Linux.
- 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.
- 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
- 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.
- 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 fichierinitpostgresql.ora
. - 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"
- Commentez la ligne qui active le traçage DG4ODBC. Par exemple :
#HS_FDS_TRACE_LEVEL = <trace_level>
- 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) ) )
- 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.
- Démarrez (ou redémarrez) l'écouteur Oracle. Par exemple :
lsnrctl stop lsnrctl start
- Connectez-vous à votre base de données Oracle dans SQL*Plus.
- 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 ligneHS_FDS_TRACE_LEVEL = DEBUG
àinitpostgresql.ora
puis démarrez / redémarrez l'écouteur Oracle. Si lelog
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 ().