Criar um banco de dados Oracle em uma VM do Azure

Aplica-se a: ✔️ Linux VMs

Este artigo descreve como usar a CLI do Azure para implantar uma máquina virtual (VM) do Azure a partir da imagem da galeria do mercado Oracle para criar um banco de dados Oracle Database 19c. Depois de implantar o servidor, você conecta o servidor via SSH para configurar o banco de dados Oracle.

Pré-requisitos

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

  • Azure Cloud Shell ou a CLI do Azure.

    Você pode executar os comandos da CLI do Azure neste início rápido interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Abrir Cloudshell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e cole-o no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell de dentro do portal do Azure. O Cloud Shell sempre usa a versão mais recente da CLI do Azure.

    Como alternativa, você pode instalar a CLI do Azure localmente para executar os comandos. As etapas neste artigo exigem a CLI do Azure versão 2.0.4 ou posterior. Execute az version para ver sua versão instalada e bibliotecas dependentes, e execute az upgrade para atualizar. Se você usar uma instalação local, entre no Azure usando o comando az login .

Criar grupo de recursos

Crie um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

O exemplo a seguir cria um grupo de recursos chamado rg-oracle no local eastus.

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

Nota

Este guia de início rápido cria uma Standard_DS2_v2 VM SKU na região Leste dos EUA. Para exibir a lista de SKUs suportados por região, use o comando az vm list-skus .

Criar a máquina virtual

Crie uma máquina virtual (VM) com o comando az vm create .

O exemplo a seguir cria uma VM chamada vmoracle19c. Ele também cria chaves SSH, se elas ainda não existirem em um local de chave padrão. Para usar um conjunto específico de chaves, você pode usar a --ssh-key-value opção com o 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

Depois de criar a VM, a CLI do Azure exibe informações semelhantes ao exemplo a seguir. Observe o valor da publicIpAddress propriedade. Use esse endereço IP para acessar a 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"
}

Criar disco para arquivos de dados Oracle

Crie e anexe um novo disco para arquivos de dados Oracle e uma área de recuperação rápida (FRA) com o comando az vm disk attach .

O exemplo a seguir cria um disco chamado oradata01.

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

Portas abertas para conectividade

Nesta tarefa, você deve configurar alguns pontos de extremidade externos para o ouvinte de banco de dados usar, configurando o NSG (grupo de segurança de rede) do Azure que protege a VM.

  1. Crie o NSG para a VM com o comando az network nsg create . Este comando cria o vmoracle19cNSG NSG para regras para controlar o acesso à VM:

    az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
    
  2. Crie uma regra NSG com o comando az network nsg rule create . Este comando cria a regra allow-oracle NSG para abrir o ponto de extremidade para acesso remoto ao banco de dados 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. Crie uma segunda regra NSG para abrir o ponto de extremidade para acesso remoto ao Oracle. Este comando cria a regra allow-oracle-EM NSG:

    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. Conforme necessário, use o comando az network public-ip show para obter o endereço IP público da sua VM:

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

Preparar ambiente de VM

  1. Crie uma sessão SSH com a VM. Substitua a <publicIPAddress> parte pelo valor de endereço IP público da sua VM, como 10.200.300.4:

    ssh azureuser@<publicIPAddress>
    
  2. Mude para o usuário root:

    sudo su -
    
  3. Localize o dispositivo de disco criado mais recentemente que você deseja formatar para armazenar arquivos de dados Oracle:

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

    A saída é semelhante a este exemplo:

    brw-rw----. 1 root disk 8, 16 Dec  8 22:57 /dev/sdc
    
  4. Como usuário root, use o comando para formatar o parted dispositivo.

    1. Primeiro, crie um rótulo de disco:

      parted /dev/sdc mklabel gpt
      
    2. Em seguida, crie uma partição primária que abranja todo o disco:

      parted -a optimal /dev/sdc mkpart primary 0GB 64GB	
      
    3. Finalmente, verifique os detalhes do dispositivo imprimindo seus metadados:

      parted /dev/sdc print
      

      A saída é semelhante a este exemplo:

      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. Crie um sistema de arquivos na partição do dispositivo:

    mkfs -t ext4 /dev/sdc1
    

    A saída é semelhante a este exemplo:

    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. Crie um ponto de montagem:

    mkdir /u02
    
  7. Monte o disco:

    mount /dev/sdc1 /u02
    
  8. Alterar permissões no ponto de montagem:

    chmod 777 /u02
    
  9. Adicione a montagem ao arquivo /etc/fstab :

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

    Importante

    Este comando monta o arquivo /etc/fstab sem um UUID específico, o que pode impedir a reinicialização bem-sucedida do disco. Antes de tentar reiniciar o disco, atualize a entrada /etc/fstab para incluir um UUID para o ponto de montagem.

  10. Atualize o arquivo /etc/hosts com o endereço IP público e o nome do host do endereço. Altere as <Public IP> duas <VMname> partes para refletir seus valores reais:

    echo "<Public IP> <VMname>.eastus.cloudapp.azure.com <VMname>" >> /etc/hosts
    
  11. Adicione o nome de domínio da VM ao arquivo /etc/hostname . O comando a seguir pressupõe que o grupo de recursos e a VM são criados na região eastus :

    sed -i 's/$/\.eastus\.cloudapp\.azure\.com &/' /etc/hostname
    
  12. Abra portas de firewall.

    Como o SELinux está habilitado por padrão na imagem do Marketplace, precisamos abrir o firewall para o tráfego da porta de escuta do banco de dados 1521 e da porta 5502 do Enterprise Manager Express. Execute os seguintes comandos como usuário root:

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

Criar a base de dados

O software Oracle já está instalado na imagem do Marketplace. Crie um banco de dados de exemplo da seguinte maneira.

  1. Mude para o usuário oracle :

    sudo su - oracle
    
  2. Inicie o ouvinte do banco de dados:

    lsnrctl start
    

    O resultado é semelhante ao seguinte exemplo:

    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. Crie um diretório de dados para os arquivos de dados Oracle:

    mkdir /u02/oradata
    
  4. Execute o Assistente de Criação de Banco de Dados:

    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
    

    Leva alguns minutos para criar o banco de dados.

    O resultado é semelhante ao seguinte exemplo:

         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. Definir variáveis Oracle:

    Antes de se conectar, você precisa definir a variável ORACLE_SIDde ambiente :

    export ORACLE_SID=oratest1
    

    Você também deve adicionar a ORACLE_SID variável ao oracle arquivo .bashrc de usuários para entradas futuras usando o seguinte comando:

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

Automatize a inicialização e o desligamento do banco de dados

O banco de dados Oracle por padrão não é iniciado automaticamente quando você reinicia a VM. Para configurar o banco de dados Oracle para iniciar automaticamente, primeiro entre como root. Em seguida, crie e atualize alguns arquivos do sistema.

  1. Faça logon como o usuário root:

    sudo su -
    
  2. Altere o sinalizador de inicialização automatizada de N para Y no arquivo /etc/oratab:

    sed -i 's/:N/:Y/' /etc/oratab
    
  3. Crie um arquivo chamado /etc/init.d/dbora e adicione o seguinte comando bash ao arquivo:

    #!/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. Altere as permissões em arquivos com o chmod comando:

    chgrp dba /etc/init.d/dbora
    chmod 750 /etc/init.d/dbora
    
  5. Crie links simbólicos para inicialização e desligamento:

    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 testar as alterações, reinicie a VM:

    reboot
    

Clean up resources (Limpar recursos)

Depois de terminar de explorar seu primeiro banco de dados Oracle no Azure e a VM não for mais necessária, você poderá usar o comando az group delete para remover o grupo de recursos, a VM e todos os recursos relacionados.

az group delete --name rg-oracle

Próximos passos