Creación de una base de datos Oracle en una VM de Azure
Se aplica a: ✔️ Máquinas virtuales Linux
Este artículo describe cómo usar la CLI de Azure para implementar una máquina virtual (VM) de Azure desde la imagen de la galería de Marketplace de Oracle para crear una base de datos de Oracle Database 19c. Después de implementar el servidor, conecte el servidor mediante SSH para configurar la base de datos de Oracle.
Requisitos previos
-
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Azure Cloud Shell o la CLI de Azure.
Puede ejecutar los comandos de la CLI de Azure en este inicio rápido de forma interactiva en Azure Cloud Shell. Para ejecutar los comandos en Cloud Shell, seleccione Abrir CloudShell en la esquina superior derecha de un bloque de código. Seleccione Copiar para copiar el código y péguelo en Cloud Shell para ejecutarlo. También podrá ejecutar Cloud Shell desde Azure Portal. Cloud Shell siempre usa la versión más reciente de la CLI de Azure.
De forma alternativa, puede instalar la CLI de Azure localmente para ejecutar los comandos. Los pasos de este artículo requieren la CLI de Azure, versión 2.0.4 o posterior. Ejecute az version para ver la versión instalada y las bibliotecas dependientes, y ejecute az upgrade para actualizar. Si usa una instalación local, inicie sesión en Azure mediante el comando az login.
Creación de un grupo de recursos
Para crear un grupo de recursos, use el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
En el ejemplo siguiente se crea un grupo de recursos llamado rg-oracle en la ubicación eastus.
az group create --name rg-oracle --location eastus
Nota
En este inicio rápido se crea una máquina virtual Standard_DS2_v2 SKU en la región Este de EE. UU. Para ver la lista de SKU soportadas según la región, use el comando az vm list-skus.
Crear máquina virtual
Cree la máquina virtual (VM) con el comando az vm create.
En el ejemplo siguiente se crea una máquina virtual denominada vmoracle19c. También se crean claves SSH, si aún no existen, en una ubicación de claves predeterminada. Para usar un conjunto específico de claves, puede usar la opción --ssh-key-value
con el comando.
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
Después de crear la máquina virtual, la CLI de Azure muestra información similar al ejemplo siguiente. Tenga en cuenta el valor de la propiedad publicIpAddress
. Use esta dirección IP para acceder a la VM.
{
"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"
}
Creación de disco para los archivos de datos de Oracle
Cree y adjunte un nuevo disco de archivos de datos de Oracle y un área de recuperación rápida (FRA) con el comando az vm disk attach.
En el ejemplo siguiente se crea un disco denominado oradata01.
az vm disk attach \
--name oradata01 --new \
--resource-group rg-oracle \
--size-gb 64 --sku StandardSSD_LRS \
--vm-name vmoracle19c
Abrir puertos para la conectividad
En esta tarea, debe configurar algunos puntos de conexión externos para el cliente de escucha de la base de datos mediante la configuración del grupo de seguridad de red de Azure (NSG) que protege la máquina virtual.
Cree el NSG para la máquina virtual con el comando az network nsg create. Este comando crea el NSG vmoracle19cNSG para que las reglas controlen el acceso a la VM:
az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
Cree una regla de NSG con el comando az network nsg rule create. Este comando crea la regla de NSG allow-oracle para abrir el punto de conexión del acceso remoto a la base de datos de Oracle:
az network nsg rule create \ --resource-group rg-oracle \ --nsg-name vmoracle19cNSG \ --name allow-oracle \ --protocol tcp \ --priority 1001 \ --destination-port-range 1521
Cree una segunda regla NSG para abrir el punto de conexión del acceso remoto a Oracle. Este comando crea la regla 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
Según sea necesario, use el comando az network public-ip show para obtener la dirección IP pública de la máquina virtual:
az network public-ip show \ --resource-group rg-oracle \ --name vmoracle19cPublicIP \ --query "ipAddress" \ --output tsv
Preparación del entorno de la máquina virtual
Cree una sesión SSH con la máquina virtual. Reemplace la parte
<publicIPAddress>
por el valor de dirección IP pública de la máquina virtual, como10.200.300.4
:ssh azureuser@<publicIPAddress>
Cambie al usuario root:
sudo su -
Busque el dispositivo de disco creado más recientemente que desea formatear para contener los archivos de datos de Oracle:
ls -alt /dev/sd*|head -1
El resultado es similar a este ejemplo:
brw-rw----. 1 root disk 8, 16 Dec 8 22:57 /dev/sdc
Como usuario raíz, use el comando
parted
para formatear el dispositivo.Primero, cree una etiqueta de disco:
parted /dev/sdc mklabel gpt
Luego, cree una partición principal que abarque todo el disco:
parted -a optimal /dev/sdc mkpart primary 0GB 64GB
Por último, consulte los detalles del dispositivo mediante la impresión de sus metadatos:
parted /dev/sdc print
El resultado es similar a este ejemplo:
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
Cree un sistema de archivos en la partición del dispositivo.
mkfs -t ext4 /dev/sdc1
El resultado es similar a este ejemplo:
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
Cree un punto de montaje:
mkdir /u02
Montaje del disco:
mount /dev/sdc1 /u02
Cambie los permisos sobre el punto de montaje:
chmod 777 /u02
Agregue el montaje al archivo/etc/fstab:
echo "/dev/sdc1 /u02 ext4 defaults 0 0" >> /etc/fstab
Importante
Este comando monta el archivo /etc/fstab sin un UUID específico, lo que puede impedir el correcto reinicio del disco. Antes de intentar reiniciar el disco, actualice la entrada /etc/fstab para incluir un UUID para el punto de montaje.
Actualice el archivo /etc/hosts con la dirección IP pública y el nombre de host de la dirección. Cambie las partes
<Public IP>
y<VMname>
para que reflejen los valores reales:echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
Agregue el nombre de dominio de la máquina virtual al archivo /etc/hostname. El siguiente comando da por hecho que el grupo de recursos y la máquina virtual se crean en la región eastus:
sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
Abra puertos del firewall.
Como SELinux está habilitado de forma predeterminada en la imagen del marketplace, es necesario abrir el firewall al tráfico del puerto del cliente de escucha de la base de datos 1521 y al puerto de Enterprise Manager Express 5502. Ejecute los siguientes comandos como usuario raíz:
firewall-cmd --zone=public --add-port=1521/tcp --permanent firewall-cmd --zone=public --add-port=5502/tcp --permanent firewall-cmd --reload
Creación de la base de datos
El software de Oracle ya está instalado en la imagen de Marketplace. Cree una base de datos de ejemplo de la manera siguiente:
Cambie al usuario oracle:
sudo su - oracle
Iniciar el agente de escucha de la base de datos:
lsnrctl start
La salida es similar a la del ejemplo siguiente:
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
Cree un directorio de datos para los archivos de datos de Oracle.
mkdir /u02/oradata
Ejecute el Asistente para la creación de bases de datos:
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 operación de creación de la base de datos tarda unos minutos.
La salida es similar a la del ejemplo siguiente:
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.
Establecimiento de las variables de Oracle:
Antes de conectarse, debe establecer la variable de entorno
ORACLE_SID
:export ORACLE_SID=oratest1
También debe agregar la variable
ORACLE_SID
al archivo .bashrc de usuarios deoracle
para los inicios de sesión futuros con el comando siguiente:echo "export ORACLE_SID=oratest1" >> ~oracle/.bashrc
Automatizar el arranque y el apagado de la base de datos
De forma predeterminada, la base de datos Oracle no se inicia automáticamente al reiniciar la máquina virtual. Para configurar la base de datos Oracle para iniciarse automáticamente, inicie primero una sesión como raíz. Después, cree y actualice algunos archivos del sistema.
Inicie sesión como usuario raíz:
sudo su -
Cambie la marca de inicio automatizada de
N
aY
en el archivo /etc/oratab:sed -i 's/:N/:Y/' /etc/oratab
Cree un archivo denominado /etc/init.d/dbora y agregue el siguiente comando bash al archivo:
#!/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
Cambie los permisos de los archivos con el comando
chmod
:chgrp dba /etc/init.d/dbora chmod 750 /etc/init.d/dbora
Cree vínculos simbólicos para el inicio y el apagado:
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
Para probar los cambios, reinicie la máquina virtual:
reboot
Limpieza de recursos
Cuando haya terminado de explorar la primera base de datos Oracle en Azure y la VM ya no se necesite, puede usar el comando az group delete para quitar el grupo de recursos, la VM y todos los recursos relacionados.
az group delete --name rg-oracle
Pasos siguientes
- Protección de la base de datos en Azure con Estrategias de copia de seguridad de Oracle
- Explore las Soluciones de Oracle en Azure
- Instalar y configurar Automated Storage Management de Oracle