Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration des liens entre Oracle Database et Aurora PostgreSQL compatible
Créée par Jeevan Shetty (AWS), Bhanu Ganesh Gudivada (AWS), Sushant Deshmukh (AWS), Uttiya Gupta (AWS) et Vikas Gupta (AWS)
Environnement : PoC ou pilote | Source : base de données Oracle | Cible : compatible avec Aurora PostgreSQL |
Type R : Replateforme | Charge de travail : Oracle ; logiciel libre | Technologies : migration ; bases de données |
Services AWS : Amazon Aurora ; Amazon EC2 Auto Scaling ; Amazon Route 53 |
Récapitulatif
Dans le cadre de la migration vers le cloud Amazon Web Services (AWS), vous pouvez moderniser vos applications afin d'utiliser des bases de données natives dans le cloud. La migration d'Oracle Database vers l'édition compatible avec Amazon Aurora PostgreSQL est l'une de ces étapes vers la modernisation. Dans le cadre de cette migration, les liens de base de données Oracle natifs doivent également être convertis.
À l'aide d'un lien de base de données, une base de données peut accéder aux objets d'une autre base de données. Après la migration d'une base de données Oracle vers une base de données compatible avec Aurora PostgreSQL, les liens de base de données du serveur de base de données Oracle vers d'autres serveurs de base de données Oracle doivent être convertis en liens de base de données PostgreSQL vers Oracle.
Ce modèle montre comment configurer des liens de base de données entre un serveur de base de données Oracle et la base de données compatible Aurora PostgreSQL. Les liens de base de données étant unidirectionnels, le modèle couvre également la conversion des liens de base de données de la base de données PostgreSQL vers la base de données Oracle.
Après la migration et la conversion d'Oracle Database vers une base de données compatible Aurora PostgreSQL, les étapes suivantes sont requises pour configurer les liens entre les bases de données :
Pour configurer un lien de base de données avec Oracle Database comme source et compatible Aurora PostgreSQL comme cible, les passerelles de base de données Oracle doivent être configurées pour la communication entre des bases de données hétérogènes.
Si vous configurez un lien de base de données entre les versions 12.6 et antérieures compatibles avec Aurora PostgreSQL en tant que base de données source et Oracle Database en tant que cible, l'oracle_fdw
extension n'est pas disponible en mode natif. Vous pouvez plutôt utiliser l'postgres_fdw
extension dans la base de données compatible Aurora PostgreSQL et la configurer dans oracle_fdw
une base de données PostgreSQL créée sur Amazon Elastic Compute Cloud (Amazon EC2). Cette base de données sert d'intermédiaire entre la base de données compatible Aurora PostgreSQL et la base de données Oracle. Ce modèle inclut deux options pour configurer le lien de base de données avec Aurora PostgreSQL 12.6 et versions antérieures :
Configurez l'instance EC2 dans un groupe Amazon EC2 Auto Scaling avec un script de démarrage Amazon EC2 qui met à jour une entrée DNS (Domain Name System) interne dans Amazon Route 53.
Configurez l'instance EC2 dans un groupe Amazon EC2 Auto Scaling, avec un Network Load Balancer pour une haute disponibilité (HA).
Si vous configurez un lien de base de données entre les versions 12.7 et ultérieures compatibles avec Aurora PostgreSQL, vous pouvez utiliser l'extension. oracle_fdw
Conditions préalables et limitations
Prérequis
Limites
Versions du produit
Architecture
Pile technologique source
Avant la migration, la base de données Oracle source peut accéder aux objets d'autres bases de données Oracle à l'aide de liens de base de données. Cela fonctionne de manière native entre les bases de données Oracle sur site ou dans le cloud AWS.
Pile technologique cible
Option 1
Amazon Aurora PostgreSQL-Compatible Edition
Base de données PostgreSQL sur une instance Amazon EC2
Groupe Amazon EC2 Auto Scaling
Amazon Route 53
Amazon Simple Notification Service (Amazon SNS)
AWS Identity and Access Management (IAM)
AWS Direct Connect
Option 2
Amazon Aurora PostgreSQL-Compatible Edition
Base de données PostgreSQL sur une instance Amazon EC2
Groupe Amazon EC2 Auto Scaling
Network Load Balancer
Amazon SNS
Direct Connect
Option 3
Architecture cible
Option 1
Le schéma suivant montre la configuration des liens de base de données à l'aide des postgres_fdw
extensions oracle_fdw
et, la haute disponibilité étant fournie par un groupe Amazon EC2 Auto Scaling et Route 53.
Une instance compatible Aurora PostgreSQL dotée de l'postgres_fdw
extension se connecte à la base de données PostgreSQL sur Amazon EC2.
La base de données PostgreSQL avec oracle_fdw
l'extension se trouve dans un groupe Auto Scaling.
La base de données PostgreSQL sur Amazon EC2 utilise Direct Connect pour se connecter à la base de données Oracle sur site.
La base de données Oracle est configurée avec Oracle Database Gateway pour les connexions entre Oracle Database et la base de données PostgreSQL sur AWS.
IAM autorise Amazon EC2 à mettre à jour les enregistrements Route 53.
Amazon SNS envoie des alertes pour les actions de dimensionnement automatique.
Le nom de domaine configuré dans Route 53 pointe vers l'adresse IP de l'instance Amazon EC2 de PostgreSQL.
Option 2
Le schéma suivant montre la configuration des liens de base de données à l'aide des postgres_fdw
extensions oracle_fdw
et, la haute disponibilité étant fournie par un groupe Auto Scaling et un Network Load Balancer.
Une instance compatible Aurora PostgreSQL dotée de l'postgres_fdw
extension se connecte au Network Load Balancer.
Le Network Load Balancer distribue la connexion entre la base de données compatible Aurora PostgreSQL et la base de données PostgreSQL sur Amazon EC2.
La base de données PostgreSQL avec oracle_fdw
l'extension se trouve dans un groupe Auto Scaling.
La base de données PostgreSQL sur Amazon EC2 utilise Direct Connect pour se connecter à la base de données Oracle sur site.
La base de données Oracle est configurée avec Oracle Database Gateway pour les connexions entre Oracle Database et la base de données PostgreSQL sur AWS.
Amazon SNS envoie des alertes pour les actions de dimensionnement automatique.
Option 3
Le schéma suivant montre la configuration des liens de base de données à l'aide de l'oracle_fdw
extension dans une base de données compatible Aurora PostgreSQL.
Une instance compatible Aurora PostgreSQL dotée de l'extension oracle_fdw
utilise Direct Connect pour se connecter à Oracle Database.
Les passerelles de base de données Oracle configurées sur Oracle Server permettent la connectivité via Direct Connect à la base de données compatible Aurora PostgreSQL.
Outils
Services AWS
Amazon Aurora PostgreSQL Compatible Edition est un moteur de base de données relationnelle entièrement géré et compatible ACID qui vous aide à configurer, exploiter et dimensionner les déploiements PostgreSQL.
AWS Direct Connect relie votre réseau interne à un emplacement Direct Connect via un câble Ethernet à fibre optique standard. Grâce à cette connexion, vous pouvez créer des interfaces virtuelles directement vers les services AWS publics tout en contournant les fournisseurs de services Internet sur votre chemin réseau.
Amazon Elastic Compute Cloud (Amazon EC2) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement. Dans ce modèle, les options 1 et 2 utilisent une instance EC2 pour héberger une base de données PostgreSQL.
Amazon EC2 Auto Scaling vous aide à maintenir la disponibilité des applications et vous permet d'ajouter ou de supprimer automatiquement des instances Amazon EC2 selon les conditions que vous définissez.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
Amazon Route 53 est un service Web DNS hautement disponible et évolutif.
Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
Elastic Load Balancing (ELB) répartit le trafic applicatif ou réseau entrant sur plusieurs cibles. Par exemple, vous pouvez répartir le trafic entre les instances, les conteneurs et les adresses IP Amazon Elastic Compute Cloud (Amazon EC2) dans une ou plusieurs zones de disponibilité. Ce modèle utilise un Network Load Balancer.
Autres services
Épopées
Tâche | Description | Compétences requises |
---|
Créez une instance EC2 et configurez l'extension PostgreSQL oracle_fdw. | Créez une instance EC2 avec le système d'exploitation Amazon Linux 2. Pour installer PostgreSQL, connectez-vous à l'instance EC2 en tant qu'ec2-user et exécutez les commandes suivantes. sudo su - root
sudo tee /etc/yum.repos.d/pgdg.repo<<EOF
[pgdg12]
name=PostgreSQL 12 for RHEL/CentOS 7 - x86_64
baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64
enabled=1
gpgcheck=0
EOF
sudo yum install -y postgresql12-server
sudo yum install postgresql12-devel
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12
Téléchargez le code oracle_fdw source depuis GitHub. mkdir -p /var/lib/pgsql/oracle_fdw/
cd /var/lib/pgsql/oracle_fdw/
wget https://github.com/laurenz/oracle_fdw/archive/refs/heads/master.zip
unzip master.zip
Installez Oracle Instant Client et configurez les variables d'environnement Oracle. yum install https://download.oracle.com/otn_software/linux/instantclient/1912000/oracle-instantclient19.12-basic-19.12.0.0.0-1.x86_64.rpm
yum install https://download.oracle.com/otn_software/linux/instantclient/1912000/oracle-instantclient19.12-devel-19.12.0.0.0-1.x86_64.rpm
export ORACLE_HOME=/usr/lib/oracle/19.12/client64export LD_LIBRARY_PATH=/usr/lib/oracle/19.12/client64/lib:$LD_LIBRARY_PATH
Assurez-vous que cela pg_config fait référence à la bonne version. which pg_config
Compileroracle_fdw . cd /var/lib/pgsql/oracle_fdw/oracle_fdw-master
make
make install
Remarque : Si vous recevez un message d'erreur indiquant que cette oci.h information est manquante, ajoutez ce qui suit dans Makefile : PourPG_CPPFLAGS , ajouter -I/usr/include/oracle/19.12/client64 PourSHLIB_LINK , ajouter -L/usr/lib/oracle/19.12/client64/lib
Pour plus d'informations, consultez le référentiel oracle_fdw. Connectez-vous à la base de données PostgreSQL et créez l'extension. oracle_fdw sudo su - postgres
psql postgres
create extension oracle_fdw;
Créez un utilisateur PostgreSQL qui sera propriétaire des tables étrangères. CREATE USER pguser WITH PASSWORD '<password>';
GRANT CONNECT ON DATABASE postgres TO pguser;
Créez le wrapper de données étrangères. Remplacez les valeurs suivantes par les détails de votre serveur de base de données Oracle : <Oracle DB Server IP>
<Oracle DB Port>
<Oracle_SID>
create server oradb foreign data wrapper oracle_fdw options (dbserver '//<Oracle DB Server IP>:<Oracle DB Port>/<Oracle_SID>');
GRANT USAGE ON FOREIGN SERVER oradb TO pguser;
Pour créer le mappage utilisateur et une table étrangère mappée à la table Oracle, connectez-vous à la base de données PostgreSQL en pguser tant que et exécutez la commande suivante. Notez que dans l'exemple de code, DMS_SAMPLE il est utilisé comme schéma Oracle contenant la NAME_DATA table et dms_sample constitue son mot de passe. Remplacez-les si nécessaire. create user mapping for pguser server oradb options (user 'DMS_SAMPLE', password 'dms_sample');
Remarque : L'exemple suivant crée une table étrangère dans PostgreSQL pour une table dans Oracle Database. Une table étrangère similaire doit être créée pour chaque table Oracle nécessitant un accès depuis l'instance PostgreSQL. CREATE FOREIGN TABLE name_data(
name_type CHARACTER VARYING(15) NOT NULL,
name CHARACTER VARYING(45) NOT NULL
) SERVER oradb OPTIONS (schema 'DMS_SAMPLE', table 'NAME_DATA');
select count(*) from name_data;
Configurez la base de données PostgreSQL sur l'instance EC2 afin qu'elle puisse localiser les bibliothèques Oracle lors du démarrage de la base de données PostgreSQL. Cela est exigé par l'oracle_fdw extension. sudo systemctl stop postgresql-12
Remarque : Modifiez le /usr/lib/systemd/system/postgresql-12.service fichier pour inclure les variables d'environnement afin que le systemctl démarrage trouve les bibliothèques Oracle requises paroracle_fdw . # Oracle Environment Variables
Environment=ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1
Environment=LD_LIBRARY_PATH=/u01/app/oracle/product/12.2.0.1/db_1/lib:/lib:/usr/lib
sudo systemctl start postgresql-12
| Administrateur cloud, DBA |
Tâche | Description | Compétences requises |
---|
Configurez une zone hébergée privée dans Amazon Route 53. | Créez une zone hébergée privée dans Amazon Route 53. Notez le nom de domaine, qui sera associé à une instance EC2. Ajoutez un enregistrement « A » à l'aide d'une politique de routage simple qui correspond à l'adresse IP de l'instance EC2, contenant l'extension oracle_fdw PostgreSQL. Après avoir enregistré l'enregistrement « A », notez l'ID de zone hébergée du nom de domaine indiqué à l'étape 1. Cela sera utilisé pour créer la politique IAM appropriée.
| DBA, administrateur du cloud |
Créez un rôle IAM qui sera attaché à une instance EC2. | Pour créer un rôle IAM qui sera attaché à l'instance EC2, appliquez la politique suivante. Remplacez <Hosted zone ID> par les informations capturées dans l'article précédent. {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "route53:ChangeResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/<Hosted zone ID>"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "route53:ListHostedZones",
"Resource": "*"
}
]
}
| Administrateur cloud, DBA |
Créez un modèle de lancement EC2. | Créez une AMI de l'instance EC2 contenant l'extension oracle_fdw PostgreSQL. Utilisez l'AMI pour créer un modèle de lancement EC2. Pour autoriser la connexion entre l'instance compatible Aurora PostgreSQL et la base de données PostgreSQL sur l'instance EC2, associez le rôle IAM que vous avez créé précédemment et attachez des groupes de sécurité. Dans la section Données utilisateur, ajoutez les commandes suivantes, en modifiant Hosted zone ID et Domain Name aux valeurs appropriées. Choisissez ensuite Créer un modèle de lancement. #!/bin/bash
v_zone_id='Hosted zone ID'
v_domain_name='Domain Name'
v_local_ipv4=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
aws route53 change-resource-record-sets --hosted-zone-id $v_zone_id --change-batch '{"Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"'$v_domain_name'","Type":"A","TTL":10,"ResourceRecords":[{"Value":"'$v_local_ipv4'"}]}}]}'
| Administrateur cloud, DBA |
Configurez le groupe Auto Scaling. | Pour configurer un groupe Auto Scaling, utilisez le modèle de lancement que vous avez créé à l'étape précédente. Configurez le VPC et les sous-réseaux appropriés qui seront utilisés pour lancer l'instance EC2. La configuration de l'option 1 n'utilise pas Load Balancer. Définissez les capacités souhaitées, minimales et maximales sur 1 dans les politiques de dimensionnement. Pour envoyer des alertes à l'équipe des opérations, ajoutez des notifications pour des événements tels que le lancement ou la fin. Passez en revue la configuration et choisissez Create Auto Scaling group.
À la fin, le groupe Auto Scaling démarre l'instance EC2 contenant l'extension oracle_fdw PostgreSQL, qui se connecte à Oracle Database. Remarque : Lorsque vous devez accéder à une nouvelle table Oracle ou modifier la structure d'une table Oracle, ces modifications doivent être reflétées dans la table étrangère PostgreSQL. Après avoir implémenté les modifications, vous devez créer une nouvelle AMI de l'instance EC2 et l'utiliser pour configurer le modèle de lancement. | Administrateur cloud, DBA |
Configurez l'extension postgres_fdw dans l'instance compatible Aurora PostgreSQL. | Configurez postgres_fdw dans l'instance compatible Aurora PostgreSQL. Cela se connecte à la base de données PostgreSQL sur Amazon EC2, qui agit comme un nœud intermédiaire entre l'instance compatible Aurora PostgreSQL et la base de données Oracle. Connectez-vous à l'instance compatible Aurora PostgreSQL et exécutez les commandes suivantes. create extension postgres_fdw;
CREATE SERVER pgoradb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'Domain Name', port '5432');
CREATE USER MAPPING for postgres SERVER pgoradb OPTIONS (user 'pguser', password '<password>');
CREATE FOREIGN TABLE data_mart.name_data(
name_type CHARACTER VARYING(15) NOT NULL,
name CHARACTER VARYING(45) NOT NULL
) SERVER pgoradb OPTIONS (schema_name 'public', table_name 'name_data');
select count(*) from data_mart.name_data;
Ceci termine la configuration d'un lien de base de données entre Aurora PostgreSQL compatible et Oracle Database. La solution fournit une stratégie de reprise après sinistre (DR) en cas de défaillance de l'instance EC2 hébergeant la base de données PostgreSQL. Le groupe Auto Scaling démarre une nouvelle instance EC2 et met à jour le DNS avec l'adresse IP de la nouvelle instance EC2. Cela garantit que les tables étrangères de l'instance compatible Aurora PostgreSQL peuvent accéder aux tables Oracle sans intervention manuelle. | Administrateur cloud, DBA |
Tâche | Description | Compétences requises |
---|
Créez un modèle de lancement EC2. | Créez une AMI de l'instance EC2 contenant l'extension oracle_fdw PostgreSQL. Utilisez l'AMI pour créer un modèle de lancement EC2.
| Administrateur cloud, DBA |
Configurez un groupe cible, un groupe Network Load Balancer et un groupe Auto Scaling. | Pour créer un groupe cible, choisissez Instances comme type de cible. Pour Protocole, choisissez TCP, et pour Port, choisissez 5432. Choisissez ensuite le VPC dans lequel vous souhaitez placer le groupe cible, puis sélectionnez le bilan de santé approprié. Créez un Network Load Balancer interne dans le VPC. Configurez l'équilibreur de charge pour qu'il écoute le protocole : port TCP:5432. Définissez l'action par défaut sur Transférer vers, puis choisissez le groupe cible que vous avez créé. Configurez un groupe Auto Scaling à l'aide du modèle de lancement que vous avez créé. Configurez le groupe Auto Scaling avec le VPC et les sous-réseaux appropriés qui seront utilisés pour lancer les instances EC2. Pour l'option d'équilibrage de charge, choisissez Attacher à un équilibreur de charge existant, puis sélectionnez le groupe cible que vous avez créé. Pour les bilans de santé, sélectionnez ELB. Définissez la capacité souhaitée et minimale sur 2, et définissez la capacité maximale sur un nombre supérieur, selon les besoins pour supporter la charge avec HA, dans les politiques de dimensionnement. Pour envoyer des alertes à l'équipe des opérations, ajoutez des notifications pour des événements tels que le lancement ou la fin. Passez en revue la configuration et choisissez Create Auto Scaling group.
À la fin, le groupe Auto Scaling démarre le nombre souhaité d'instances EC2 contenant l'extension oracle_fdw PostgreSQL qui se connecte à Oracle Database. Remarque : Lorsque vous devez accéder à une nouvelle table Oracle ou modifier la structure d'une table Oracle, ces modifications doivent être reflétées dans la table étrangère PostgreSQL. Après avoir implémenté les modifications, vous devez créer une nouvelle AMI de l'instance EC2 et l'utiliser pour configurer le modèle de lancement. | Administrateur cloud, DBA |
Configurez l'extension postgres_fdw dans l'instance compatible Aurora PostgreSQL. | Configurez postgres_fdw dans l'instance compatible Aurora PostgreSQL. Cela se connecte à la base de données PostgreSQL sur EC2 via un Network Load Balancer. L'instance PostgreSQL sur EC2 agit comme un nœud intermédiaire entre l'instance compatible Aurora PostgreSQL et Oracle Database. Connectez-vous à l'instance compatible Aurora PostgreSQL et exécutez les commandes suivantes. create extension postgres_fdw;
CREATE SERVER pgoradb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'DNS name of Network Load Balancer', port '5432');
CREATE USER MAPPING for postgres SERVER pgoradb OPTIONS (user 'pguser', password '<password>');
CREATE FOREIGN TABLE data_mart.name_data(
name_type CHARACTER VARYING(15) NOT NULL,
name CHARACTER VARYING(45) NOT NULL
) SERVER pgoradb OPTIONS (schema_name 'public', table_name 'name_data');
select count(*) from data_mart.name_data;
Ceci termine la configuration du lien de base de données entre Aurora PostgreSQL compatible et Oracle Database. En cas d'échec de l'hébergement de la base de données PostgreSQL par EC2, le Network Load Balancer identifie la panne et arrête le trafic vers l'instance EC2 défaillante. Le groupe Auto Scaling démarre une nouvelle instance EC2 et l'enregistre auprès de l'équilibreur de charge. Cela garantit qu'en cas de défaillance de l'instance EC2 d'origine, les tables étrangères de l'instance compatible Aurora PostgreSQL peuvent accéder aux tables Oracle sans intervention manuelle. | Administrateur cloud, DBA |
Tâche | Description | Compétences requises |
---|
Configurez l'extension oracle_fdw dans l'instance compatible Aurora PostgreSQL. | Pour les bases de données compatibles Aurora PostgreSQL versions 12.7 et ultérieures, l'extension est disponible en mode natif. oracle_fdw Il n'est donc plus nécessaire de créer la base de données PostgreSQL intermédiaire sur une instance EC2. L'instance compatible Aurora PostgreSQL peut se connecter directement à Oracle Database. Pour créer l'oracle_fdw extension, connectez-vous à l'instance compatible Aurora PostgreSQL et exécutez la commande suivante. create extension oracle_fdw;
Créez le wrapper de données étrangères. Remplacez les valeurs suivantes par les détails de votre serveur de base de données Oracle : <Oracle DB Server IP>
<Oracle DB Port>
<Oracle_SID>
create server oradb foreign data wrapper oracle_fdw options (dbserver '//<Oracle DB Server IP>:<Oracle DB Port>/<Oracle_SID>');
Pour créer le mappage utilisateur et une table étrangère mappée à la table Oracle, exécutez la commande suivante. Notez que dans l'exemple de code, DMS_SAMPLE il est utilisé comme schéma Oracle contenant la NAME_DATA table et dms_sample constitue son mot de passe. Remplacez-les si nécessaire. En outre, la table étrangère doit être créée dans l'instance compatible Aurora PostgreSQL pour accéder à toutes les autres tables Oracle. create user mapping for postgres server oradb options (user 'DMS_SAMPLE', password 'dms_sample');
CREATE FOREIGN TABLE name_data(
name_type character varying(15) OPTIONS (key 'true') NOT NULL,
name character varying(45) OPTIONS (key 'true') NOT NULL
)SERVER oradb OPTIONS (schema 'DMS_SAMPLE', table 'NAME_DATA');
Une table étrangère similaire doit être créée pour chaque table Oracle nécessitant un accès depuis l'instance PostgreSQL.
| Administrateur cloud, DBA |
Tâche | Description | Compétences requises |
---|
Configurez la passerelle sur le serveur de base de données Oracle local. | En tant qu'utilisateur root, installez le dernier gestionnaire de pilotes UnixODBC. sudo yum install unixODBC*
Installez le pilote ODBC PostgreSQL (). psqlODBC sudo wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install pgdg-redhat-repo-latest.noarch.rpm
sudo yum install postgresql12-odbc
Créez un nom de source de données ODBC (DSN) pour le pilote. Le gestionnaire de pilotes UnixODBC fournit les utilitaires de ligne de commande et odbcinst les odbc_config utilitaires de ligne de commande utilisés pour configurer isql et tester le pilote. À l'aide odbcinst de odbc_config nos utilitaires, vous pouvez localiser les fichiers du gestionnaire de pilotes UnixODBC pour transmettre les informations du pilote afin de créer le DSN. odbcinst -j
Le code suivant montre un exemple de sortie. unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
odbc_config --odbcini --odbcinstini
/etc/odbc.ini
/etc/odbcinst.ini
Dans l'exemple de sortie, vous pouvez voir les odbc.ini fichiers odbcinst.ini et. odbcinst.ini Il s'agit essentiellement d'un registre et d'un fichier de configuration pour les pilotes ODBC dans un environnement, tandis qu'odbc.ini il s'agit d'un registre et d'un fichier de configuration pour les DSN ODBC. Pour activer les pilotes, vous devez modifier ces deux fichiers. Configurez les bibliothèques de psqlODBC pilotes dans le fichier /etc/odbcinst.ini de pilote ODBC et ajoutez les lignes suivantes à la fin du fichier. Ces lignes constituent une entrée pour le conducteur. [PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbcw.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbcw.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
Créez un DSN dans le etc/odbc.ini fichier /. Le gestionnaire de pilotes lit ce fichier pour déterminer comment se connecter à la base de données à l'aide des détails du pilote spécifiés dansodbcinst.ini . Remplacez les paramètres suivants par des valeurs réelles : [pgdsn]
Driver=/usr/pgsql-12/lib/psqlodbc.so
Description=PostgreSQL ODBC Driver
Database=<PostgreSQL Database Name>
Servername=<Aurora PostgreSQL Endpoint>
Username=<PostgreSQL username>
Password=<PostgreSQL password>
Port=<PostgreSQL Port>
UseDeclareFetch=1
CommLog=/tmp/pgodbclink.log
Debug=1
LowerCaseIdentifier=1
À l'aide de cet isql utilitaire, testez la connexion ODBC (psqlODBC ) au DSN de base de données PostgreSQL que vous avez créé. isql -v pgdsn
Le code suivant montre un exemple de sortie. +---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
quit
À l'aide du DSN, créez la passerelle pour le gestionnaire de services ODBC (HS). En tant qu'oracle utilisateur, créez un fichier initDSN.ora à cet emplacement$ORACLE_HOME/hs/admin . Dans ce cas, pgdsn c'est le DSN, vous devez donc créer un fichier appeléinitpgdsn.ora . more initpgdsn.ora
Le code suivant montre un exemple de sortie. # This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=pgdsn
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_TRACE_FILE_NAME=/tmp/ora_hs_trace.log
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini
Ajustez l'écouteur ($ORACLE_HOME/network/admin/listener.ora ) en ajoutant l'entrée DSN. SID_LIST_LISTENER more $ORACLE_HOME/network/admin/listener.ora
Le code suivant montre un exemple de sortie. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(SID_NAME = pgdsn)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/db_1)
(ENVS="LD_LIBRARY_PATH=/lib64:/usr/lib:/usr/lib64:/u01/app/oracle/product/12.2.0.1/db_1")
(PROGRAM=dg4odbc)
)
)
Ajustez le tnsname ($ORACLE_HOME/network/admin/tnsnames.ora ) en ajoutant l'entrée DSN. more $ORACLE_HOME/network/admin/tnsnames.ora
Le code suivant montre un exemple de sortie. pgdsn=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=pgdsn))(HS=OK))
Redémarrez l'écouteur Oracle afin que les entrées liées au DSN effectuées dans les fichiers réseau puissent prendre effet, en les remplaçant <Listener Name> par le nom d'écouteur Oracle approprié. lsnrctl stop <Listener Name>
lsnrctl start <Listener Name>
Après avoir redémarré l'écouteur Oracle, celui-ci créera un gestionnaire Oracle HS avec un nom DSN (). pgdsn Utilisez le DSN pour créer un lien de base de données Oracle afin d'accéder à la base de données PostgreSQL en vous connectant à Oracle Database. create public database link pgdb connect to "postgres" identified by "postgres" using 'pgdsn';
Accédez aux données PostgreSQL en utilisant le lien de base de données Oracle créé. select count(*) from "pg_tables"@pgdb;
| DBA |
Ressources connexes
Informations supplémentaires
Bien que l'oracle_fdw
extension soit disponible avec les versions 12.7 et ultérieures compatibles avec Aurora PostgreSQL, ce modèle inclut des solutions pour les versions antérieures des bases de données compatibles Aurora PostgreSQL, car de nombreux clients prennent en charge les anciennes versions de bases de données compatibles Aurora PostgreSQL, et la mise à niveau d'une base de données implique plusieurs niveaux de tests d'application et de performance. De plus, la fonctionnalité de liaison de base de données est largement utilisée, et l'objectif de cet article est de fournir des options pour toutes les versions d'Aurora compatibles avec PostgreSQL.