Chargement de données à l'aide d'Oracle Database Gateway exécuté dans OCI Compute

OracleDB pour Azure permet aux applications Azure de charger et d'interroger des données à partir de bases de données OCI. Cette architecture décrit comment un serveur Oracle Exadata Database Service on Dedicated Infrastructure peut exploiter l'infrastructure fournie par OracleDB for Azure pour charger et interroger les données d'Azure SQL Server à l'aide d'un lien de base de données via le logiciel Oracle Database Gateway for SQL Server exécuté dans une instance OCI Compute.

Architecture

Cette architecture utilise Oracle Database Gateway for SQL Server exécuté dans une instance OCI Compute pour charger des données d'Azure SQL Server vers Oracle Exadata Database Service on Dedicated Infrastructure. Oracle Database Gateway for SQL Server se connecte à Azure SQL Server à l'aide du lien réseau à faible latence rapide à l'aide d'une adresse privée Azure.

Le diagramme suivant illustre cette architecture.



exadata-db-azure-odsa-gateway.zip

Prenez note des remarques suivantes concernant cette architecture :

  • Une nouvelle règle de sécurité doit être créée dans le sous-réseau client Oracle Exadata Database Service on Dedicated Infrastructure pour autoriser le trafic vers le port 1521.
  • Le logiciel Oracle Database Gateway peut être exécuté sur la machine virtuelle OCI Compute ou Bare Metal. Le nombre d'OCPU, la mémoire et la taille de disque doivent être affectés à l'instance OCI Compute conformément aux exigences et aux instructions de dimensionnement du serveur Oracle Database Gateway for SQL Server. Pour plus d'informations, reportez-vous à la configuration système requise pour Oracle Database Gateway for SQL Server ci-dessous.
  • La résolution du nom d'hôte par adresse IP pour l'adresse Azure SQL Server est requise dans OCI. Modifiez le fichier /etc/hosts sur le serveur Oracle Database Gateway ou configurez une zone DNS privée sur le réseau cloud virtuel OCI (VCN) où Oracle Exadata Database Service on Dedicated Infrastructure est configuré.
  • Dans les bases de données Oracle Exadata Database Service on Dedicated Infrastructure, le paramètre global_names est défini sur TRUE par défaut. Par conséquent, le nom de base de données complet doit être utilisé lors de la création du lien de base de données vers Azure SQL Server.

Avant de commencer

Avant de commencer, vérifiez les versions des principaux composants logiciels utilisés dans cette configuration, téléchargez le package logiciel requis et consultez la documentation du produit pour plus de détails.

Vérifier la configuration logicielle

Ces instructions sont testées sur les versions logicielles et matérielles suivantes.

  • Oracle Exadata Database Service on Dedicated Infrastructure X8M-2
  • Oracle Database 19.16
  • Azure SQL Server

Téléchargez le package logiciel suivant :

A propos des services et des rôles requis

Cette solution requiert les services suivants :

  • Oracle Exadata Database Service on Dedicated Infrastructure avec OracleDB pour Azure
  • Oracle Cloud Infrastructure
  • Oracle Cloud Infrastructure Compute

Il s'agit des rôles nécessaires pour chaque service.

Nom de service : rôle Obligatoire pour...
Oracle Exadata Database Service on Dedicated Infrastructure : sys con Configurez le lien de base de données.
Oracle Cloud Infrastructure : VCN Admin Ajoutez des règles de sécurité et modifiez le DNS.
Oracle Cloud Infrastructure Compute : admin Créez une instance Compute pour installer Oracle Database Gateway.
Oracle Cloud Infrastructure Compute : opc/root Créez un utilisateur pour installer et configurer le logiciel Oracle Database Gateway. Modifiez le pare-feu local pour autoriser les connexions au port 1521.

Reportez-vous à Découvrez comment obtenir les services Oracle Cloud pour les solutions Oracle afin d'obtenir les services cloud dont vous avez besoin.

Remarques concernant l'exécution d'Oracle Database Gateway dans une instance OCI Compute

Passez en revue ces considérations avant d'implémenter cette solution. L'exécution d'Oracle Database Gateway for SQL Server dans une instance OCI Compute est idéale pour les clients qui connaissent les services OCI.

Avantages d'Oracle Database Gateway exécuté dans OCI Compute

  • Oracle Database Gateway for SQL Server est développé et pris en charge par Oracle.
  • Aucun logiciel tiers supplémentaire n'est requis pour être installé sur Oracle Exadata Database Service on Dedicated Infrastructure, ce qui facilite la mise à jour et la maintenance de l'environnement.
  • Oracle Database Gateway for SQL Server est exécuté sur une instance de calcul distincte d'Oracle Exadata Database Service on Dedicated Infrastructure, ce qui facilite la mise à jour et la maintenance des deux environnements. En outre, la solution peut être plus abordable, car le logiciel Oracle Database Gateway s'exécute sur des OCPU OCI Compute moins onéreuses plutôt que sur des OCPU Oracle Exadata Database Service on Dedicated Infrastructure plus spécialisées et à prix plus élevé.
  • La communication entre le serveur Oracle Database Gateway et Microsoft Azure SQL Server est cryptée (par défaut, Microsoft Azure SQL Server).
  • La conversion et le mappage des types de données entre les bases de données Oracle et les bases de données Microsoft Azure SQL Server sont gérés automatiquement par le logiciel Oracle Database Gateway.

Inconvénients de l'exécution d'Oracle Database Gateway dans OCI Compute

  • Une licence supplémentaire peut être requise pour le logiciel Oracle Database Gateway.
  • La communication entre Oracle Exadata Database Service on Dedicated Infrastructure et le serveur Oracle Database Gateway n'est pas cryptée par défaut lors de la configuration du serveur Oracle Database Gateway. Une configuration supplémentaire dans le serveur Oracle Database Gateway sqlnet.ora est requise pour appliquer le cryptage d'Oracle Exadata Database Service on Dedicated Infrastructure vers le serveur Oracle Database Gateway.

Configurer Oracle Database Gateway en cours d'exécution dans OCI Compute

  1. Connectez-vous à la console Azure pour obtenir les informations de la base de données Azure SQL Server à partir de laquelle la base de données Oracle Exadata Database Service on Dedicated Infrastructure chargera et interrogera les données. Ces informations sont requises pour indiquer au serveur Oracle Database Gateway comment se connecter à la base de données Azure SQL Server.
    Obtenez les informations suivantes :
    • Nom de base de données : nom de la base de données Azure SQL Server.
    • Nom de serveur entièrement qualifié : nom d'hôte complet du serveur SQL sur lequel la base de données Azure SQL Server est exécutée, généralement au format servername.database.windows.net.
    • Adresse privée Azure SQL Server : nom et adresse IP de l'adresse privée Azure SQL Server dans le réseau virtuel Azure qui se connecte à Azure SQL Server. S'il n'existe pas encore d'adresse privée, créez-en une pour Azure SQL Server et notez le nom et l'adresse IP.
    • Nom utilisateur Azure SQL Server : nom d'un utilisateur Azure SQL Server existant autorisé à se connecter à la base de données et au schéma Azure SQL Server, généralement sqladmin.
    • Mot de passe utilisateur Azure SQL Server : mot de passe de l'utilisateur Azure SQL Server pour se connecter à la base de données et au schéma Azure SQL Server.
  2. Connectez-vous à la console OCI et créez une instance OCI Compute sur le sous-réseau client OracleDB pour Azure Oracle Exadata Database Service on Dedicated Infrastructure exécutant Oracle Linux 7.9. Cette instance de calcul exécutera Oracle Database Gateway for SQL Server.
    Notez le nom d'hôte et l'adresse IP affectés à cette instance de calcul. Ces informations sont requises pour indiquer à Oracle Exadata Database Service on Dedicated Infrastructure comment se connecter au serveur Oracle Database Gateway.
  3. Dans le menu OCI, sélectionnez Networking/DNS Management et créez une zone DNS privée. Dans la nouvelle zone DNS privée, ajoutez un enregistrement pour le nom de serveur complet à partir de l'étape 1 afin de résoudre l'adresse IP d'adresse privée Azure SQL Server à partir de l'étape 1.
  4. Dans le menu OCI, créez une vue privée DNS. Ajoutez la zone DNS privée créée à l'étape 3 à cette vue privée DNS et activez les modifications.
  5. Dans le menu OCI, sélectionnez Réseau réseau/réseau client virtuel (VCN). Sélectionnez le VCN créé lorsque le OracleDB pour Azure pour Oracle Exadata Database Service on Dedicated Infrastructure a été provisionné (modifiez le compartiment si nécessaire). Sélectionnez le lien de résolveur DNS et ajoutez la vue privée DNS créée précédemment au résolveur DNS.
    Cela permet la résolution de noms et d'adresses IP à partir des services OCI (calcul et Oracle Exadata Database Service on Dedicated Infrastructure) vers l'adresse privée Azure SQL Server.
  6. Connectez-vous à l'un des noeuds de cluster de machines virtuelles Oracle Exadata Database Service on Dedicated Infrastructure et utilisez la commande nslookup pour vérifier que la résolution du nom d'hôte par adresse IP fonctionne pour le nom d'hôte Azure SQL Server et l'adresse IP de l'adresse privée.
    Par exemple :
    [opc@exa_dbnodex ~]$ nslookup servername.database.windows.net
    Server: 169.254.169.254
    Address: 169.254.169.254#53
    Non-authoritative answer:
    Name: servername.database.windows.net
    Address: IP_address_of_Azure_SQL_Server_private_endpoint
     [opc@exa_dbnodex ~]$
    Les variables de l'exemple ont les valeurs suivantes :
    • servername est le nom du serveur complet du serveur Azure SQL Server de l'étape 1.
    • IP_address_of_Azure_SQL_Server_private_endpoint est l'adresse IP de l'adresse privée Azure SQL Server de l'étape 1.
  7. Installez le logiciel Oracle Database Gateway que vous avez téléchargé précédemment sur la nouvelle instance de calcul OCI.
  8. Configurez Oracle Database Gateway pour Azure SQL Server exécuté dans l'instance OCI Compute pour vous connecter à la base de données Azure SQL Server via l'adresse privée Azure SQL Server à l'aide du lien réseau à faible latence rapide configuré par OracleDB pour Azure entre Azure et OCI.
  9. Sur tous les noeuds du cluster de machines virtuelles Oracle Exadata Database Service on Dedicated Infrastructure, configurez la base de données Oracle Exadata Database Service on Dedicated Infrastructure tnsnames.ora pour qu'elle soit résolue en Oracle Database Gateway for SQL Server.
    Par exemple :
    [opc@exa_dbnodex ~]$ sudo su - oracle
    Last login: Tue Sep 13 20:06:30 UTC 2022
    [oracle@ exa_dbnodex ~]$ . ./exadb_name.env
    [oracle@ exa_dbnodex ~]$ cd $ORACLE_HOME
    [oracle@ exa_dbnodex dbhome_1]$ cd network/admin
    [oracle@ exa_dbnodex admin]$ cd exadb_name/
    [oracle@ exa_dbnodex exadb_name]$ tail -10 tnsnames.ora
    Database_Name_From_Step_1 =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521))
    (CONNECT_DATA=(SID=Database_Name_From_Step_1,))
    (HS=OK)
    )
    Les variables de l'exemple ont les valeurs suivantes :
    • exadb_name est le nom de la base de données Oracle Exadata Database Service on Dedicated Infrastructure.
    • Database_Name_From_Step_1 est le nom de la base de données de l'étape 1.
    • OCI_Compute_Instance_Hostname_From_Step_2 est le nom d'hôte de l'instance OCI Compute de l'étape 2.
  10. Utilisez la commande tnsping pour tester la connectivité entre Oracle Exadata Database Service on Dedicated Infrastructure et Oracle Database Gateway exécutés dans OCI Compute (cette connexion se trouve entièrement dans le VCN OCI).
    Par exemple :
    [oracle@exajc-dbnodex ~]$ tnsping Database_Name_From_Step_1
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 16-SEP-2022 21:28:34
    Used parameter files:
    /u02/app/oracle/product/19.0.0.0/dbhome_1/network/admin/exadb_name/s
    qlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= 
    (ADDRESS=(PROTOCOL=tcp)(HOST==OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521)) (CONNECT_DATA=(SID=Database_Name_From_Step_1)) 
    (HS=OK))
    OK (0 msec)
    [oracle@exadbnodex ~]$
    Les variables de l'exemple ont les valeurs suivantes :
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server de l'étape 1.
    • exadb_name est le nom de la base de données Oracle Exadata Database Service on Dedicated Infrastructure.
    • OCI_Compute_Instance_Hostname_From_Step_2 est le nom d'hôte de l'instance OCI Compute de l'étape 2.
  11. Dans la base de données pluggable Oracle Exadata Database Service on Dedicated Infrastructure (et non dans la base de données Conteneur), créez un lien de base de données vers la base de données Azure SQL Server. Par défaut, le paramètre global_names est défini sur TRUE dans les bases de données Oracle Exadata Database Service on Dedicated Infrastructure. Par conséquent, le nom de base de données complet doit être utilisé pour créer le lien de base de données. Une fois le lien de base de données créé, vous pouvez interroger et charger des données de la base de données Azure SQL Server vers la base de données pluggable Oracle Exadata Database Service on Dedicated Infrastructure à l'aide de ce lien.
    [opc@exadbnodex ~]$ sudo su - oracle
    Last login: Tue Sep 13 20:06:30 UTC 2022
    [oracle@exadbnodex ~]$ . ./exadb_name.env
    [oracle@exadbnodex ~]$sqlplus / as sysdba
    SQL> show pdbs;
    CON_ID CON_NAME OPEN MODE RESTRICTED
    ---------- ------------------------------ ---------- ----------
     2 PDB$SEED READ ONLY NO
     3 PDBName READ WRITE NO
    SQL> alter session set container=PDBName;
    Session altered.
    SQL>create public database 
    link Fully_Qualified_Server_Name_From_Step_1 connect to 
    "Azure_SQL_Server_Username" identified by 
    "Azure_SQL_User_password" using 
    'Database_Name_From_Step_1';
    Database link created.
    Notez que le nom utilisateur et le mot de passe sont entre guillemets doubles (""), tandis que le nom de base de données Azure SQL Server est entre guillemets simples (' ').
    Les variables de l'exemple ont les valeurs suivantes :
    • exadb_name est le nom de la base de données Oracle Exadata Database Service on Dedicated Infrastructure.
    • PDBName est le nom de la base de données pluggable.
    • Fully_Qualified_Server_Name_From_Step_1 est le nom d'hôte complet du serveur SQL sur lequel la base de données Azure SQL Server est exécutée, à partir de l'étape 1.
    • Azure_SQL_Server_Username est le nom du nom utilisateur Azure SQL Server existant, issu de l'étape 1.
    • Azure_SQL_User_Password est le mot de passe de l'utilisateur Azure SQL Server pour se connecter à la base de données, à partir de l'étape 1.
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server, à partir de l'étape 1.
  12. Testez le lien de base de données nouvellement créé en exécutant une requête. Par exemple :
    SQL> select count(*) from 
    some_table@DatabaseLink_Name_From_Previous_Step;
    Les variables de l'exemple ont les valeurs suivantes :
    • some_table est le nom d'une table de la base de données à interroger.
    • DatabaseLink_Name_From_Previous_Step est le nom du lien de base de données de l'étape 11.

Installation du serveur Oracle Database Gateway

Ces étapes décrivent l'installation du logiciel Oracle Database Gateway Server sur une instance OCI Compute exécutant Oracle Linux 7.9.

  1. Utilisez yum pour installer les packages prérequis Oracle.
    [root@dbgw ~]# yum install oracle-database-preinstall-19c
  2. Créez les groupes user, oracle et dba.
    [root@dbgw ~]# useradd -u 1001 -g dba -d /home/oracle -m -s /bin/bash oracle
    [root@dbgw ~]# groupadd -g 1001 dba
  3. Créez un répertoire d'installation pour Oracle Database Gateway 19.3.
    [root@dbgw ~]# mkdir /u01
    [root@dbgw ~]# chown oracle:dba /u01
  4. Modifiez le pare-feu local pour autoriser les connexions au port 1521.
    [root@dbgw ~]# firewall-cmd --get-active-zones
    public
    interfaces: eth0
    [root@dbgw ~]# firewall-cmd --zone=public --add-port=1521/tcp –permanent
    [root@dbgw ~]# firewall-cmd --reload
    [root@dbgw ~]# firewall-cmd --zone=public --list-ports
    1521/tcp
    [root@dbgw ~]# systemctl stop firewalld
    [root@dbgw ~]# systemctl start firewalld
  5. Copiez les fichiers ZIP Oracle Database Gateway 19.3 téléchargés précédemment dans le répertoire /home/oracle de la machine virtuelle linux, puis décompressez le fichier ZIP Oracle Database Gateway 19.3.
    [oracle@dbgw ~]$ unzip LINUX.X64_193000_gateways.zip
  6. Créez un fichier de réponses d'installation à partir du modèle inclus.
    [oracle@dbgw response]$ cd /home/oracle/gateways/response/
    [oracle@dbgw response]$ cp tg.rsp/home/oracle/tg-jc.rsp
  7. Modifiez le fichier de réponses avec les options suivantes :
    UNIX_GROUP_NAME=oracle
    INVENTORY_LOCATION=/u01/app/oraInventory
    ORACLE_HOME=/u01/app/oracle/product/gateway
    ORACLE_BASE=/u01/app/oracle
    oracle.install.tg.msqlConStr={Fully_Qualified_Server_Name_From_Step_1,1433,
    Database_Name_From_Step_1,Database_Name_From_Step_1}
    Les variables de l'exemple ont les valeurs suivantes :
    • Fully_Qualified_Server_Name_From_Step_1 est le nom d'hôte complet du serveur SQL sur lequel la base de données Azure SQL Server est exécutée, à partir de l'étape 1.
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server, à partir de l'étape 1.
  8. Exécutez l'installation silencieuse pour installer Oracle Database Gateway 19.3.
    [oracle@dbgw gateways]$./runInstaller -silent -noconfig -
    responseFile /home/oracle/tg-jc.rsp
  9. Configurez le répertoire de base et le chemin Oracle pour l'utilisateur oracle.
    [oracle@dbgw ~]$ tail -6 .bash_profile
    ORACLE_HOME=/u01/app/oracle/product/gateway
    export ORACLE_HOME
    PATH=$PATH:$ORACLE_HOME/bin
    export PATH
    [oracle@dbgw ~]$

Configurer Oracle Database Gateway for SQL Server

Une fois qu'Oracle Database Gateway est installé sur l'instance OCI Compute exécutant Linux 7.9, il doit être configuré pour se connecter à la base de données Azure SQL Server à l'aide de l'adresse privée Azure SQL Server.

  1. Ajoutez les informations de base de données Azure SQL Server au fichier d'initialisation Oracle Database Gateway for SQL Server exécuté sur l'instance OCI Compute. Ces informations indiquent à Oracle Database Gateway comment se connecter à la base de données Azure SQL Server.
    Par exemple :
    [oracle@dbgw ~]$ cd $ORACLE_HOME/dg4msql/admin
    [oracle@dbgw admin]$ cp initdg4msql.ora 
    initDatabase_Name_From_Step_1.ora
    [oracle@dbgw admin]$ cat initDatabase_Name_From_Step_1.ora
    # This is a customized agent init file that contains the HS parameters
    # that are needed for the Database Gateway for Microsoft SQL Server
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO=Fully_Qualified_Server_Name_From_Step_1:1433//Database_Name_From_Step_1
    # alternate connect format is hostname/serverinstance/databasename
    HS_DB_NAME=Database_Hostname_From_Step_1
    HS_DB_DOMAIN=Database_Domain_Name #usually database.windows.net
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_RECOVERY_ACCOUNT=RECOVER
    HS_FDS_RECOVERY_PWD=RECOVER
    HS_FDS_ENCRYPT_SESSION=SSL
    HS_FDS_VALIDATE_SERVER_CERT=0
    Les variables de l'exemple ont les valeurs suivantes :
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server, à partir de l'étape 1.
    • Fully_Qualified_Server_Name_From_Step_1 est le nom d'hôte complet du serveur SQL sur lequel la base de données Azure SQL Server est exécutée, à partir de l'étape 1.
    • Database_Hostname_From_Step_1 est le nom d'hôte de la base de données, à l'étape 1.
    • Database_Domain_Name est le nom du domaine dans lequel réside la base de données, généralement database.windows.net.
    Notez que les paramètres HS_FDS_ENCRYPT_SESSION et HS_FDS_VALIDATE_SERVER_CERT sont requis pour que la connexion entre le serveur Oracle Database Gateway et Azure SQL Server soit cryptée.
  2. Sur le serveur Oracle Database Gateway, modifiez tnsnames.ora afin qu'il soit résolu en services Gateway fournis par cette passerelle, comme suit :
    [oracle@dbgw ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
    # This is a sample tnsnames.ora that contains the NET8 parameters that are
    # needed to connect to an HS Agent
    Database_Name_From_Step_1 =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST= 
    OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521))
    (CONNECT_DATA=(SID=Database_Name_From_Step_1))
    (HS=OK)
    )
    Les variables de l'exemple ont les valeurs suivantes :
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server, à partir de l'étape 1.
    • OCI_Compute_Instance_Hostname_From_Step_2 est le nom d'hôte de l'instance OCI Compute à partir de l'étape 2.
  3. Sur le serveur Oracle Database Gateway, modifiez listener.ora pour inclure les informations Oracle Database Gateway.
    [oracle@dbgw-jc admin]$ cat ../../network/admin/listener.ora
    # This is a sample listener.ora that contains the NET8 parameters that are
    # needed to connect to an HS Agent
    LISTENER =
    (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=
    OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521))
    )
    SID_LIST_LISTENER=
    (SID_LIST=
    (SID_DESC=
     (SID_NAME=Database_Name_From_Step_1)
     (ORACLE_HOME=/u01/app/oracle/product/gateway)
     (PROGRAM=dg4msql)
    )
    )
    Les variables de l'exemple ont les valeurs suivantes :
    • OCI_Compute_Instance_Hostname_From_Step_2 est le nom d'hôte de l'instance OCI Compute à partir de l'étape 2.
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server à partir de l'étape 1.
  4. Démarrez le processus d'écoute dans le serveur Oracle Database Gateway exécuté dans l'instance OCI Compute et testez la connectivité à la passerelle.
    Par exemple :
    [oracle@dbgw admin]$lsnrctl start
    [oracle@dbgw admin]$ tnsping Database_Name_From_Step_1
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 16-SEP-2022 21:18:39
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST= 
    OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521)) 
    (CONNECT_DATA=(SID=Database_Name_From_Step_1)) (HS=OK))
    OK (0 msec)
    [oracle@dbgw-jc admin]$
    Les variables de l'exemple ont les valeurs suivantes :
    • Database_Name_From_Step_1 est le nom de la base de données Azure SQL Server à partir de l'étape 1.
    • OCI_Compute_Instance_Hostname_From_Step_2 est le nom d'hôte de l'instance OCI Compute à partir de l'étape 2.