Créer une base de données Oracle dans une machine virtuelle Azure

S’applique à : ✔️ Machines virtuelles Linux

Cet article explique comment utiliser Azure CLI pour déployer une machine virtuelle Azure à partir de l’image de galerie de place de marché Oracle pour créer une base de données Oracle Database 19c. Après avoir déployé le serveur, vous connectez le serveur via SSH pour configurer la base de données Oracle.

Prérequis

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

  • Azure Cloud Shell ou Azure CLI.

    Vous pouvez exécuter les commandes Azure CLI de ce démarrage rapide de manière interactive dans Azure Cloud Shell. Pour exécuter les commandes dans Cloud Shell, sélectionnez Ouvrir Cloud Shell dans le coin supérieur droit d’un bloc de code. Sélectionnez Copier pour copier le code, puis collez-le dans Cloud Shell afin de l’exécuter. Vous pouvez exécuter Azure Cloud Shell à partir du Portail Azure. Cloud Shell utilise toujours la dernière version d’Azure CLI.

    Vous pouvez également installer Azure CLI localement pour exécuter les commandes. Les étapes décrites dans cet article nécessitent la version 2.0.4 ou ultérieure d’Azure CLI. Exécutez az version pour connaître votre version installée et les bibliothèques dépendantes, puis exécutez az upgrade pour effectuer une mise à niveau. Si vous utilisez une installation locale, connectez-vous à Azure à l’aide de la commande az login.

Créer un groupe de ressources

Créez un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.

L’exemple suivant crée un groupe de ressources nommé rg-oracle à l’emplacement eastus.

az group create --name rg-oracle --location eastus

Notes

Ce guide de démarrage rapide crée une machine virtuelle SKU Standard_DS2_v2 dans la région USA Est. Pour afficher la liste des références SKU prises en charge par région, utilisez la commande az vm list-skus.

Créer une machine virtuelle

Créez une machine virtuelle avec la commande az vm create.

L’exemple suivant crée une machine virtuelle nommée vmoracle19c. Il crée également des clés SSH si elles n’existent pas déjà à un emplacement de clé par défaut. Pour utiliser un ensemble spécifique de clés, vous pouvez utiliser l’option --ssh-key-value avec la commande.

az vm create \
    --name vmoracle19c \
    --resource-group rg-oracle \
    --image Oracle:oracle-database-19-3:oracle-database-19-0904:latest \
    --size Standard_DS2_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --public-ip-address-allocation static \
    --public-ip-address-dns-name vmoracle19c

Une fois que vous avez créé la machine virtuelle, Azure CLI affiche des informations similaires à l’exemple suivant. Notez la valeur pour la propriété publicIpAddress. Vous utilisez cette adresse IP pour accéder à la machine virtuelle.

{
  "fqdns": "",
  "id": "/subscriptions/{snip}/resourceGroups/rg-oracle/providers/Microsoft.Compute/virtualMachines/vmoracle19c",
  "location": "eastus",
  "macAddress": "00-0D-3A-36-2F-56",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.64.104.241",
  "resourceGroup": "rg-oracle"
}

Créer un disque pour les fichiers de données Oracle

Créez et attachez un nouveau disque pour les fichiers de données Oracle et une zone de récupération rapide (FRA) avec la commande az vm disk attach.

L’exemple suivant crée un disque nommé oradata01.

az vm disk attach \
    --name oradata01 --new \
    --resource-group rg-oracle \
    --size-gb 64 --sku StandardSSD_LRS \
    --vm-name vmoracle19c

Ouverture des ports pour la connectivité

Dans cette tâche, vous devez configurer certains points de terminaison externes utilisés par l’écouteur de base de données. Pour cela, configurez le groupe de sécurité réseau (NGS) Azure qui protège la machine virtuelle.

  1. Créez le groupe de sécurité réseau pour la machine virtuelle avec la commande az network nsg create. Cette commande crée le groupe de sécurité réseau vmoracle19cNSG pour les règles permettant de contrôler l’accès à la machine virtuelle :

    az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
    
  2. Créez une règle NSG avec la commande az network nsg rule create. Cette commande crée la règle NSG allow-oracle pour ouvrir le point de terminaison pour l’accès à distance à la base de données Oracle :

    az network nsg rule create \
        --resource-group rg-oracle \
        --nsg-name vmoracle19cNSG \
        --name allow-oracle \
        --protocol tcp \
        --priority 1001 \
        --destination-port-range 1521
    
  3. Créez une deuxième règle de groupe de sécurité réseau pour ouvrir le point de terminaison pour l’accès à distance à Oracle. Cette commande crée la règle NSG allow-oracle-EM :

    az network nsg rule create \
        --resource-group rg-oracle \
        --nsg-name vmoracle19cNSG \
        --name allow-oracle-EM \
        --protocol tcp \
        --priority 1002 \
        --destination-port-range 5502
    
  4. Si nécessaire, utilisez la commande az network public-ip show pour obtenir l’adresse IP publique de votre machine virtuelle :

    az network public-ip show \
        --resource-group rg-oracle \
        --name vmoracle19cPublicIP \
        --query "ipAddress" \
        --output tsv
    

Préparer l’environnement de la machine virtuelle

  1. Créez une session SSH avec la machine virtuelle. Remplacez la partie <publicIPAddress> par la valeur d’adresse IP publique de votre machine virtuelle, par exemple 10.200.300.4 :

    ssh azureuser@<publicIPAddress>
    
  2. Basculez vers l'utilisateur racine :

    sudo su -
    
  3. Recherchez l’appareil disque le plus récemment créé que vous souhaitez mettre en forme pour contenir les fichiers de données Oracle :

    ls -alt /dev/sd*|head -1
    

    La sortie est similaire à cet exemple :

    brw-rw----. 1 root disk 8, 16 Dec  8 22:57 /dev/sdc
    
  4. En tant qu’utilisateur racine, utilisez la commande parted pour formater l’appareil.

    1. Créez d’abord une étiquette de disque :

      parted /dev/sdc mklabel gpt
      
    2. Ensuite, créez une partition principale qui s’étend sur l’ensemble du disque :

      parted -a optimal /dev/sdc mkpart primary 0GB 64GB	
      
    3. Enfin, vérifiez les détails de l’appareil en imprimant ses métadonnées :

      parted /dev/sdc print
      

      La sortie est similaire à cet exemple :

      Model: Msft Virtual Disk (scsi)
      Disk /dev/sdc: 68.7GB
      Sector size (logical/physical): 512B/4096B
      Partition Table: gpt
      Disk Flags:
      Number   Start    End      Size     File system   Name     Flags
      1        1049kB   64.0GB   64.0GB   ext4          primary
      
  5. Créez un système de fichiers sur la partition de l’appareil :

    mkfs -t ext4 /dev/sdc1
    

    La sortie est similaire à cet exemple :

    mke2fs 1.42.9 (28-Dec-2013)
    Discarding device blocks: done                            
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    3907584 inodes, 15624704 blocks
    781235 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2164260864
    477 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
         32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
         4096000, 7962624, 11239424
     Allocating group tables: done                            
     Writing inode tables: done                            
     Creating journal (32768 blocks): done
     Writing superblocks and filesystem accounting information: done   
    
  6. Créez un point de montage :

    mkdir /u02
    
  7. Montez le disque :

    mount /dev/sdc1 /u02
    
  8. Modifiez les autorisations sur le point de montage :

    chmod 777 /u02
    
  9. Ajoutez le montage au fichier /etc/fstab :

    echo "/dev/sdc1               /u02                    ext4    defaults        0 0" >> /etc/fstab
    

    Important

    Cette commande monte le fichier /etc/fstab sans UUID spécifique, ce qui peut empêcher un redémarrage réussi du disque. Avant de tenter de redémarrer le disque, mettez à jour l’entrée /etc/fstab pour inclure un UUID pour le point de montage.

  10. Mettez à jour le fichier /etc/hosts avec l’adresse IP publique et le nom d’hôte de l’adresse. Changez les portions <Public IP> et <VMname> en les remplaçant par vos valeurs réelles :

    echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
    
  11. Ajoutez le nom de domaine de la machine virtuelle au fichier /etc/hostname. La commande suivante suppose que le groupe de ressources et la machine virtuelle sont créés dans la région eastus :

    sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
    
  12. Ouvrez les ports du pare-feu.

    Dans la mesure où SELinux est activé par défaut sur l’image de la place de marché, il faut autoriser le trafic via le pare-feu pour le port d’écoute de base de données 1521 et le port Enterprise Manager Express 5502. Exécutez les commandes suivantes en tant qu’utilisateur racine :

    firewall-cmd --zone=public --add-port=1521/tcp --permanent
    firewall-cmd --zone=public --add-port=5502/tcp --permanent
    firewall-cmd --reload
    

Création de la base de données

Le logiciel Oracle est déjà installé sur l’image Place de marché. Créer une base de données comme suit.

  1. Passez à l’utilisateur oracle :

    sudo su - oracle
    
  2. Démarrez l’écouteur de bases de données :

    lsnrctl start
    

    Le résultat ressemble à l’exemple suivant :

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 20-OCT-2020 01:58:18
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                20-OCT-2020 01:58:18
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    The listener supports no services
    The command completed successfully
    
  3. Créez un répertoire de données pour les fichiers de données Oracle :

    mkdir /u02/oradata
    
  4. Exécutez l’outil Database Creation Assistant (Assistant Création de base de données) :

    dbca -silent \
        -createDatabase \
        -templateName General_Purpose.dbc \
        -gdbname oratest1 \
        -sid oratest1 \
        -responseFile NO_VALUE \
        -characterSet AL32UTF8 \
        -sysPassword OraPasswd1 \
        -systemPassword OraPasswd1 \
        -createAsContainerDatabase false \
        -databaseType MULTIPURPOSE \
        -automaticMemoryManagement false \
        -storageType FS \
        -datafileDestination "/u02/oradata/" \
        -ignorePreReqs
    

    La création de la base de données ne nécessite que quelques minutes.

    Le résultat ressemble à l’exemple suivant :

         Prepare for db operation
        10% complete
        Copying database files
        40% complete
        Creating and starting Oracle instance
        42% complete
        46% complete
        50% complete
        54% complete
        60% complete
        Completing Database Creation
        66% complete
        69% complete
        70% complete
        Executing Post Configuration Actions
        100% complete
        Database creation complete. For details check the logfiles at: /u01/app/oracle/cfgtoollogs/dbca/oratest1.
        Database Information:
        Global Database Name:oratest1
        System Identifier(SID):oratest1
        Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/oratest1/oratest1.log" for further details.
    
  5. Déterminez les variables oracle :

    Avant de vous connecter, vous devez définir la variable d’environnement ORACLE_SID :

    export ORACLE_SID=oratest1
    

    Vous devez également ajouter la variable ORACLE_SID au fichier .bashrc des utilisateurs oracle pour les prochaines connexions à l’aide de la commande suivante :

    echo "export ORACLE_SID=oratest1" >> ~oracle/.bashrc
    

Automatisation du démarrage et de l’arrêt de la base de données

La base de données Oracle par défaut ne s’enclenche pas automatiquement lorsque vous redémarrez la machine virtuelle. Pour configurer la base de données Oracle afin qu’elle démarre automatiquement, connectez-vous d’abord en tant qu’utilisateur racine. Puis, créez et mettez à jour des fichiers système.

  1. Connectez-vous en tant qu’utilisateur racine :

    sudo su -
    
  2. Modifiez l’indicateur de démarrage automatisé de N à Y dans le fichier /etc/oratab :

    sed -i 's/:N/:Y/' /etc/oratab
    
  3. Créez un fichier nommé /etc/init.d/dbora et ajoutez la commande bash suivante au fichier :

    #!/bin/sh
    # chkconfig: 345 99 10
    # Description: Oracle auto start-stop script.
    #
    # Set ORA_HOME to be equivalent to $ORACLE_HOME.
    ORA_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
    ORA_OWNER=oracle
    
    case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the Oracle sign-in
        # will not prompt the user for any values.
        # Remove "&" if you don't want startup as a background process.
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
        touch /var/lock/subsys/dbora
        ;;
    
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the Oracle sign-in
        # will not prompt the user for any values.
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" &
        rm -f /var/lock/subsys/dbora
        ;;
    esac
    
  4. Modifiez les autorisations des fichiers à l’aide de la commande chmod :

    chgrp dba /etc/init.d/dbora
    chmod 750 /etc/init.d/dbora
    
  5. Créez des liens symboliques pour le démarrage et l’arrêt :

    ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
    ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
    ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
    
  6. Pour tester vos modifications, redémarrez la machine virtuelle :

    reboot
    

Nettoyer les ressources

Lorsque vous avez terminé d’explorer votre première base de données Oracle sur Azure et que la machine virtuelle n’est plus nécessaire, vous pouvez utiliser la commande az group delete pour supprimer le groupe de ressources, la machine virtuelle et toutes les ressources associées.

az group delete --name rg-oracle

Étapes suivantes