Compartilhar via


Criar um Banco de Dados Oracle em uma VM do Azure

Aplica-se a: ✔️ VMs do Linux

Este artigo descreve como usar a CLI do Azure para implantar uma VM (máquina virtual) do Azure na imagem da galeria do marketplace Oracle para criar um banco de dados do Oracle Database 19c. Após implantar o servidor, você conecta o servidor por meio do SSH para configurar o banco de dados do Oracle.

Pré-requisitos

  • Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

  • Azure Cloud Shell ou CLI do Azure.

    As etapas desse início rápido executam os comandos da CLI do Azure interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Abrir o CloudShell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e colá-lo no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell no portal do Azure. O Azure Cloud Shell sempre usa a última versão da CLI do Azure.

    Você também pode instalar a CLI do Azure localmente para executar os comandos. As etapas deste artigo exigem a CLI do Azure versão 2.0.4 ou posterior. Execute az version para localizar a versão instalada e as bibliotecas dependentes e execute az upgrade para atualizar. Se você usar uma instalação local, acesse o 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 contêiner lógico no qual os recursos do Azure são implantados e gerenciados.

O exemplo a seguir cria um grupo de recursos denominado rg-oracle na localização eastus.

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

Observação

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

Criar máquina virtual

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

O exemplo a seguir cria uma VM nomeada como 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 opção --ssh-key-value 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 propriedade publicIpAddress. Você usa 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 os arquivos de dados do Oracle

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

O exemplo a seguir cria um disco nomeado como oradata01.

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

Abrir as portas para conectividade

Nesta tarefa, você precisará configurar alguns pontos de extremidade externos para uso do ouvinte do banco de dados 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. Esse comando cria o NSG vmoracle19cNSG para que as regras controlem o acesso à VM:

    az network nsg create --resource-group rg-oracle --name vmoracle19cNSG
    
  2. Crie uma regra de NSG com o comando az network nsg rule create. Esse comando cria a regra de NSG allow-oracle para abrir o ponto de extremidade para acesso remoto ao banco de dados do 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 de NSG para abrir o ponto de extremidade para acesso remoto ao Oracle. Esse comando cria a regra de 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. Conforme necessário, use o comando az network public-ip show para obter o endereço IP público da VM:

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

Preparar o ambiente da VM

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

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

    sudo su -
    
  3. Localize o dispositivo de disco criado mais recentemente que você deseja formatar para armazenar os arquivos de dados do 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 o usuário raiz, use o comando parted para formatar o dispositivo.

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

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

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

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

    mkdir /u02
    
  7. Montar o disco:

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

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

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

    Importante

    Esse comando monta o arquivo /etc/fstab sem uma UUID específica, o que pode impedir a reinicialização bem-sucedida do disco. Antes de tentar reinicializar o disco, atualize a entrada /etc/fstab para incluir uma 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 o <Public IP> e as duas partes <VMname> 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 sejam criados na região eastus:

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

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

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

Criar o banco de dados

O software Oracle já está instalado na imagem do Marketplace. Crie um banco de dados de exemplo conforme descrito a seguir.

  1. Mude para o usuário oracle:

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

    lsnrctl start
    

    A saída deverá ser 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. Criar um diretório de dados para os arquivos de dados do 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
    

    A criação do banco de dados demora alguns minutos.

    A saída deverá ser 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 as variáveis do Oracle:

    Antes de se conectar, é necessário definir a variável de ambiente ORACLE_SID:

    export ORACLE_SID=oratest1
    

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

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

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

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

  1. Entrar como o usuário raiz:

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

    sed -i 's/:N/:Y/' /etc/oratab
    
  3. Crieum 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 nos arquivos com o comando chmod:

    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
    

Limpar os recursos

Ao terminar de explorar seu primeiro banco de dados do 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óximas etapas