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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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

  1. 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, como 10.200.300.4:

    ssh azureuser@<publicIPAddress>
    
  2. Cambie al usuario root:

    sudo su -
    
  3. 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
    
  4. Como usuario raíz, use el comando parted para formatear el dispositivo.

    1. Primero, cree una etiqueta de disco:

      parted /dev/sdc mklabel gpt
      
    2. Luego, cree una partición principal que abarque todo el disco:

      parted -a optimal /dev/sdc mkpart primary 0GB 64GB	
      
    3. 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
      
  5. 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   
    
  6. Cree un punto de montaje:

    mkdir /u02
    
  7. Montaje del disco:

    mount /dev/sdc1 /u02
    
  8. Cambie los permisos sobre el punto de montaje:

    chmod 777 /u02
    
  9. 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.

  10. 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
    
  11. 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
    
  12. 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:

  1. Cambie al usuario oracle:

    sudo su - oracle
    
  2. 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
    
  3. Cree un directorio de datos para los archivos de datos de Oracle.

    mkdir /u02/oradata
    
  4. 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.
    
  5. 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 de oracle 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.

  1. Inicie sesión como usuario raíz:

    sudo su -
    
  2. Cambie la marca de inicio automatizada de N a Y en el archivo /etc/oratab:

    sed -i 's/:N/:Y/' /etc/oratab
    
  3. 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
    
  4. Cambie los permisos de los archivos con el comando chmod:

    chgrp dba /etc/init.d/dbora
    chmod 750 /etc/init.d/dbora
    
  5. 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
    
  6. 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