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.
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
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
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
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
Crie uma sessão SSH com a VM. Substitua a parte
<publicIPAddress>
pelo valor do endereço IP público para a VM, como10.200.300.4
:ssh azureuser@<publicIPAddress>
Mude para o usuário raiz:
sudo su -
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
Como o usuário raiz, use o comando
parted
para formatar o dispositivo.Primeiro, crie um rótulo de disco:
parted /dev/sdc mklabel gpt
Em seguida, crie uma partição primária que abrange o disco inteiro:
parted -a optimal /dev/sdc mkpart primary 0GB 64GB
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
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
Criar um ponto de montagem:
mkdir /u02
Montar o disco:
mount /dev/sdc1 /u02
Alterar as permissões no ponto de montagem:
chmod 777 /u02
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.
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
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
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.
Mude para o usuário oracle:
sudo su - oracle
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
Criar um diretório de dados para os arquivos de dados do Oracle:
mkdir /u02/oradata
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.
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áriosoracle
.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.
Entrar como o usuário raiz:
sudo su -
Alterar o sinalizador de inicialização automatizado de
N
paraY
no arquivo /etc/oratab:sed -i 's/:N/:Y/' /etc/oratab
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
Altere as permissões nos arquivos com o comando
chmod
:chgrp dba /etc/init.d/dbora chmod 750 /etc/init.d/dbora
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
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
- Proteger seu banco de dados no Azure com as estratégias de backup do Oracle
- Explorar soluções do Oracle no Azure
- Instalar e configurar o Oracle Automated Storage Management