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.
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
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
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
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
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 exemple10.200.300.4
:ssh azureuser@<publicIPAddress>
Basculez vers l'utilisateur racine :
sudo su -
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
En tant qu’utilisateur racine, utilisez la commande
parted
pour formater l’appareil.Créez d’abord une étiquette de disque :
parted /dev/sdc mklabel gpt
Ensuite, créez une partition principale qui s’étend sur l’ensemble du disque :
parted -a optimal /dev/sdc mkpart primary 0GB 64GB
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
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
Créez un point de montage :
mkdir /u02
Montez le disque :
mount /dev/sdc1 /u02
Modifiez les autorisations sur le point de montage :
chmod 777 /u02
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.
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
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
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.
Passez à l’utilisateur oracle :
sudo su - oracle
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
Créez un répertoire de données pour les fichiers de données Oracle :
mkdir /u02/oradata
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.
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 utilisateursoracle
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.
Connectez-vous en tant qu’utilisateur racine :
sudo su -
Modifiez l’indicateur de démarrage automatisé de
N
àY
dans le fichier /etc/oratab :sed -i 's/:N/:Y/' /etc/oratab
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
Modifiez les autorisations des fichiers à l’aide de la commande
chmod
:chgrp dba /etc/init.d/dbora chmod 750 /etc/init.d/dbora
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
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
- Protégez votre base de données dans Azure avec les stratégies de sauvegarde Oracle
- Explorez les solutions Oracle sur Azure
- Installer et configurer Oracle Automated Storage Management