Configuration des liens entre Oracle Database et Aurora PostgreSQL compatible - Recommandations AWS

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

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_fdwextension n'est pas disponible en mode natif. Vous pouvez plutôt utiliser l'postgres_fdwextension 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

Prérequis

  • Base de données compatible avec Amazon Aurora PostgreSQL dans un cloud privé virtuel (VPC)

  • Connectivité réseau entre les bases de données compatibles Oracle et Aurora PostgreSQL

Limites

  • Actuellement, les liens de base de données ne peuvent pas être configurés avec Amazon Relational Database Service (Amazon RDS) pour Oracle comme base de données source et la base de données compatible Aurora PostgreSQL comme base de données cible.

Versions du produit

  • Oracle Database 11g et versions ultérieures

  • Aurora PostgreSQL compatible 11 et versions ultérieures

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

  • Amazon Aurora PostgreSQL-Compatible Edition

  • Direct Connect

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.

Processus en sept étapes avec Direct Connect connectant le centre de données de l'entreprise au cloud AWS.
  1. Une instance compatible Aurora PostgreSQL dotée de l'postgres_fdwextension se connecte à la base de données PostgreSQL sur Amazon EC2.

  2. La base de données PostgreSQL avec oracle_fdw l'extension se trouve dans un groupe Auto Scaling.

  3. La base de données PostgreSQL sur Amazon EC2 utilise Direct Connect pour se connecter à la base de données Oracle sur site.

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

  5. IAM autorise Amazon EC2 à mettre à jour les enregistrements Route 53.

  6. Amazon SNS envoie des alertes pour les actions de dimensionnement automatique.

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

Processus en six étapes incluant un Network Load Balancer.
  1. Une instance compatible Aurora PostgreSQL dotée de l'postgres_fdwextension se connecte au Network Load Balancer.

  2. 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.

  3. La base de données PostgreSQL avec oracle_fdw l'extension se trouve dans un groupe Auto Scaling.

  4. La base de données PostgreSQL sur Amazon EC2 utilise Direct Connect pour se connecter à la base de données Oracle sur site.

  5. 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.

  6. 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_fdwextension dans une base de données compatible Aurora PostgreSQL.

Processus léger en deux étapes utilisant l'extension oracle_fwd.
  1. Une instance compatible Aurora PostgreSQL dotée de l'extension oracle_fdw utilise Direct Connect pour se connecter à Oracle Database.

  2. 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.

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

TâcheDescriptionCompétences requises

Créez une instance EC2 et configurez l'extension PostgreSQL oracle_fdw.

  1. Créez une instance EC2 avec le système d'exploitation Amazon Linux 2.

  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
  3. 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
  4. 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
  5. Assurez-vous que cela pg_config fait référence à la bonne version.

    which pg_config
  6. 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.

  7. Connectez-vous à la base de données PostgreSQL et créez l'extension. oracle_fdw

    sudo su - postgres psql postgres create extension oracle_fdw;
  8. 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;
  9. 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;
  10. 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;
  11. 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_fdwextension.

    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âcheDescriptionCompétences requises

Configurez une zone hébergée privée dans Amazon Route 53.

  1. Créez une zone hébergée privée dans Amazon Route 53. Notez le nom de domaine, qui sera associé à une instance EC2.

  2. 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.

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

  1. Créez une AMI de l'instance EC2 contenant l'extension oracle_fdw PostgreSQL.

  2. Utilisez l'AMI pour créer un modèle de lancement EC2.

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

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

  1. Pour configurer un groupe Auto Scaling, utilisez le modèle de lancement que vous avez créé à l'étape précédente.

  2. 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.

  3. Définissez les capacités souhaitées, minimales et maximales sur 1 dans les politiques de dimensionnement.

  4. Pour envoyer des alertes à l'équipe des opérations, ajoutez des notifications pour des événements tels que le lancement ou la fin.

  5. 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.

  1. 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.

  2. 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âcheDescriptionCompétences requises

Créez un modèle de lancement EC2.

  1. Créez une AMI de l'instance EC2 contenant l'extension oracle_fdw PostgreSQL.

  2. 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.

  1. 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é.

  2. 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éé.

  3. Configurez un groupe Auto Scaling à l'aide du modèle de lancement que vous avez créé.

  4. Configurez le groupe Auto Scaling avec le VPC et les sous-réseaux appropriés qui seront utilisés pour lancer les instances EC2. 

  5. 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.

  6. 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.

  7. Pour envoyer des alertes à l'équipe des opérations, ajoutez des notifications pour des événements tels que le lancement ou la fin.

  8. 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âcheDescriptionCompé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.

  1. Pour créer l'oracle_fdwextension, connectez-vous à l'instance compatible Aurora PostgreSQL et exécutez la commande suivante.

    create extension oracle_fdw;
  2. 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>');
  3. 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âcheDescriptionCompétences requises

Configurez la passerelle sur le serveur de base de données Oracle local.

  1. En tant qu'utilisateur root, installez le dernier gestionnaire de pilotes UnixODBC.

    sudo yum install unixODBC*
  2. 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
  3. 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.iniIl s'agit essentiellement d'un registre et d'un fichier de configuration pour les pilotes ODBC dans un environnement, tandis qu'odbc.iniil 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.

  4. 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
  5. 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 :

    • <PostgreSQL Port>

    • <PostgreSQL Database Name>

    • <Aurora PostgreSQL Endpoint>

    • <PostgreSQL username>

    • <PostgreSQL password>

    [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
  6. À 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
  7. À l'aide du DSN, créez la passerelle pour le gestionnaire de services ODBC (HS).

    En tant qu'oracleutilisateur, 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
  8. 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)    ) )
  9. 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))
  10. 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

  11. 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';
  12. Accédez aux données PostgreSQL en utilisant le lien de base de données Oracle créé.

    select count(*) from "pg_tables"@pgdb;
DBA

Bien que l'oracle_fdwextension 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.