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, conecte-o 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 VM SKU Standard_DS2_v2 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.
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
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
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
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
Crie uma sessão SSH com a VM. Substitua a
<publicIPAddress>
parte pelo valor de endereço IP público da sua VM, como10.200.300.4
:ssh azureuser@<publicIPAddress>
Mude para o usuário root:
sudo su -
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
Como usuário root, use o
parted
comando 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 abranja todo o disco:
parted -a optimal /dev/sdc mkpart primary 0GB 64GB
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
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
Crie um ponto de montagem:
mkdir /u02
Monte o disco:
mount /dev/sdc1 /u02
Alterar permissões no ponto de montagem:
chmod 777 /u02
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.
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
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
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.
Mude para o usuário oracle :
sudo su - oracle
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
Crie um diretório de dados para os arquivos de dados 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
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.
Definir variáveis Oracle:
Antes de se conectar, você precisa definir a variável
ORACLE_SID
de ambiente :export ORACLE_SID=oratest1
Você também deve adicionar a
ORACLE_SID
variável aooracle
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.
Faça logon como o usuário root:
sudo su -
Altere o sinalizador de inicialização automatizada de
N
paraY
no arquivo /etc/oratab:sed -i 's/:N/:Y/' /etc/oratab
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
Altere as permissões em arquivos com o
chmod
comando: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
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
- Proteja seu banco de dados no Azure com estratégias de backup Oracle
- Explore as soluções Oracle no Azure
- Instalar e configurar o Oracle Automated Storage Management