Chargement de données à l'aide d'Oracle Database Gateway Server exécuté dans une machine virtuelle Azure

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 des données à partir d'un serveur SQL Azure à l'aide d'un lien de base de données via le logiciel Oracle Database Gateway for SQL Server exécuté dans une machine virtuelle Azure.

Architecture

Cette architecture utilise Oracle Database Gateway for SQL Server exécuté sur une machine virtuelle Azure 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-azure-vm.zip

Prenez note des remarques suivantes concernant cette architecture :

  • Le logiciel Oracle Database Gateway for SQL Server peut être exécuté sur une machine virtuelle Azure. Le nombre d'UC, la mémoire et la taille de disque doivent être affectés à la machine virtuelle Azure conformément aux exigences et aux instructions de dimensionnement d'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.
  • Oracle Exadata Database Service on Dedicated Infrastructure doit résoudre le nom d'hôte et l'adresse IP de la machine virtuelle Azure exécutant Oracle Database Gateway. 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 :

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

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é, modifiez DNS pour résoudre le problème en adresse Azure et machine virtuelle Azure.
Machine virtuelle Azure : root Créez l'utilisateur oracle 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 machine virtuelle Azure

L'exécution d'Oracle Database Gateway for SQL Server dans une machine virtuelle Azure est idéale pour les clients qui connaissent bien les services Azure, mais qui ne connaissent pas très bien les services OCI.

Avantages d'Oracle Database Gateway exécuté dans une machine virtuelle Azure

  • 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 Azure moins onéreuses au lieu d'être exécuté sur les OCPU Oracle Exadata Database Service on Dedicated Infrastructure plus spécialisées et à prix élevé.
  • La communication entre le serveur Oracle Database Gateway et Azure SQL Server est cryptée (appliquée par la configuration par défaut d'Azure SQL Server).
  • La conversion et le mappage des types de données entre Oracle Database et Azure SQL Server Database sont gérés automatiquement par le logiciel Oracle Database Gateway.
  • La résolution de nom d'hôte pour Azure SQL Server est gérée automatiquement par Azure au niveau de la machine virtuelle Azure.

Inconvénients de l'exécution d'Oracle Database Gateway dans une machine virtuelle Azure

  • 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 Oracle Database Gateway sqlnet.ora est requise pour appliquer le cryptage d'Oracle Exadata Database Service on Dedicated Infrastructure au serveur Oracle Database Gateway.

Configurer Oracle Database Gateway en cours d'exécution sur une machine virtuelle Azure

  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 qualifié complet : nom d'hôte qualifié complet pour SQL Server 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 ou 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. Créez une machine virtuelle Azure exécutant Linux 7.9 sur le réseau virtuel configuré pour OracleDB pour Azure. Cette machine virtuelle exécutera Oracle Database Gateway for SQL Server. Notez le nom d'hôte et l'adresse IP (sur Azure vnet) affectées à cette machine virtuelle, ces informations sont requises pour indiquer à la base de données Oracle Exadata Database Service on Dedicated Infrastructure comment se connecter au serveur Oracle Database Gateway. Le nom d'hôte est généralement au format servername.windows.net.
  3. Dans le menu principal OCI, sélectionnez Networking/DNS Management pour créer une zone DNS privée. Dans la nouvelle zone DNS privée, ajoutez un nom d'hôte d'enregistrement et une adresse IP de la machine virtuelle Azure créée à l'étape précédente.
  4. Dans le menu principal OCI, sélectionnez Networking/DNS Management pour créer une vue privée DNS. Ajoutez la zone DNS privée créée à l'étape précédente à cette vue privée DNS nouvellement créée et activez les modifications.
  5. Dans le menu principal OCI, sélectionnez Réseau réseau/réseau client virtuel (VCN). Sélectionnez le VCN créé lorsque le service Oracle Database Gateway Oracle Exadata Database Service on Dedicated Infrastructure a été provisionné (modifiez le compartiment si nécessaire). Cliquez sur le lien du résolveur DNS, puis ajoutez la vue privée DNS créée à l'étape précédente au résolveur DNS. Cela permettra la résolution de noms et d'adresses IP à partir d'Oracle Exadata Database Service on Dedicated Infrastructure vers la machine virtuelle Azure exécutant Oracle Database Gateway.
  6. Connectez-vous à l'un des noeuds de cluster de machines virtuelles Oracle Exadata Database Service on Dedicated Infrastructure pour utiliser nslookup afin de vérifier que la résolution du nom d'hôte par adresse IP fonctionne pour la machine virtuelle Azure qui exécutera Oracle Database Gateway.
    Par exemple :
    [opc@exa_dbnodex ~]$ nslookup servername.windows.net
    Server: 169.254.169.254
    Address: 169.254.169.254#53
    Non-authoritative answer:
    Name: servername.windows.net
    Address: IP_address_of_Azure_VM_from_step_2
    [opc@exa_dbnodex ~]$
    Les variables de l'exemple ont les valeurs suivantes :
    • servername est le nom de l'adresse privée Azure SQL Server de l'étape 1.
    • IP_address_of_Azure_VM_from_step_2 est l'adresse IP de la machine virtuelle Azure à partir de l'étape 2.
  7. Installez le logiciel Oracle Database Gateway que vous avez téléchargé précédemment sur la nouvelle machine virtuelle Azure.
  8. Configurez Oracle Database Gateway for Azure SQL Server pour vous connecter à la base de données Azure SQL Server à l'aide de l'adresse privée Azure SQL Server.
    La machine virtuelle Azure exécutant Oracle Database Gateway et l'adresse privée Azure SQL Server se trouvent dans le même réseau virtuel Azure.
  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 :
    [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=Azure_VM_Hostname_From_Step_2)(PORT=15
    21))
    (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.
    • Azure_VM_Hostname_From_Step_2 est le nom d'hôte de la machine virtuelle Azure à partir de l'étape 2.
  10. Utilisez tnsping pour tester la connectivité entre la base de données Oracle Exadata Database Service on Dedicated Infrastructure et Oracle Database Gateway for SQL Server exécutée sur la machine virtuelle Azure (cette connexion utilise le lien réseau à faible latence rapide établi par OracleDB for Azure entre Azure et OCI).
    [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=Azure_VM_Hostname_From_Step_2)(PORT=15
    21)) (CONNECT_DATA=(SID=Database_Name_From_Step_1)) (HS=OK))
    OK (0 msec)
    [oracle@exadbnodex ~]$
    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.
    • Azure_VM_Hostname_From_Step_2 est le nom d'hôte de la machine virtuelle Azure à partir de l'étape 2.
  11. Dans Oracle Exadata Database Service on Dedicated Infrastructure, la base de données pluggable (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 Oracle Exadata Database Service on Dedicated Infrastructure base de données pluggable à 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;
    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 est le nom du lien de base de données de l'étape 11.

Installer Oracle Database Gateway Server

Ces étapes décrivent l'installation du logiciel Oracle Database Gateway Server sur une machine virtuelle Azure exécutant Oracle Linux 7.9.

  1. Utilisez yum pour installer les packages des 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 Server 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 la machine virtuelle Azure 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:1433//Database_Name_From_Step_1
    # alternate connect format is hostname/serverinstance/databasename
    HS_DB_NAME=Database_Name_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 d'hôte de la base de données Azure SQL Server, à partir de l'étape 1.
    • Fully_Qualified_Server_Name 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_Domain_Name est le nom du domaine dans lequel réside la base de données à l'étape 1, 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
    Azure_SQL_Server_Database_Name =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST= 
    Azure_VM_Hostname_From_Step_2)(PORT=1521))
    (CONNECT_DATA=(SID=Azure_SQL_Server_Database_Name))
    (HS=OK)
    )
    Les variables de l'exemple ont les valeurs suivantes :
    • Azure_SQL_Server_Database_Name est le nom de la base de données Azure SQL Server à partir de l'étape 1.
    • Azure_VM_Hostname_From_Step_2 est le nom d'hôte de la machine virtuelle Azure à partir de l'étape 2.
  3. Sur le serveur Oracle Database Gateway, modifiez listener.ora pour inclure les informations Oracle Database Gateway.
    Par exemple :
    [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=
    Azure_VM_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 :
    • Azure_VM_Hostname_From_Step_2 est le nom d'hôte de la machine virtuelle Azure à 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 la machine virtuelle Azure 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= 
    Azure_VM_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.
    • Azure_VM_Hostname_From_Step_2 est le nom d'hôte de la machine virtuelle Azure à partir de l'étape 2.