Criar cópias de segurança e recuperar a Base de Dados Oracle numa VM linux do Azure com Ficheiros do Azure
Aplica-se a: ✔️ VMs do Linux
Este artigo demonstra a utilização de Ficheiros do Azure como suporte para criar cópias de segurança e restaurar uma base de dados Oracle em execução numa máquina virtual (VM) do Azure. Os passos neste artigo foram testados no Oracle 12.1 e posterior.
Neste artigo, vai utilizar o Oracle Gestor de Recuperação (RMAN) para fazer uma cópia de segurança da base de dados para uma partilha de ficheiros do Azure montada numa VM através do protocolo SMB (Server Message Block). A utilização de Ficheiros do Azure para suportes de dados de cópias de segurança é rentável e eficaz. No entanto, para bases de dados muito grandes, Azure Backup fornece uma solução melhor.
Pré-requisitos
Utilize o ambiente bash no Azure Cloud Shell. Para obter mais informações, veja Início Rápido do Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, veja Como executar a CLI do Azure num contentor do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de início de sessão, veja Iniciar sessão com a CLI do Azure.
Quando lhe for pedido, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Para executar o processo de cópia de segurança e recuperação, primeiro tem de criar uma VM do Linux que tenha uma instância instalada da Base de Dados Oracle. Recomendamos que utilize o Oracle 12.x ou posterior.
Crie uma instância da Base de Dados Oracle ao seguir os passos em Criar uma instância da Base de Dados Oracle numa VM do Azure.
Preparar o ambiente da base de dados
Para criar uma sessão secure shell (SSH) com a VM, utilize o seguinte comando. Substitua
<publicIpAddress>
pelo valor de endereço público da VM.ssh azureuser@<publicIpAddress>
Mude para o utilizador raiz:
sudo su -
Adicione o
oracle
utilizador ao ficheiro /etc/sudoers :echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Este passo pressupõe que tem uma instância oracle (teste) em execução numa VM com o nome vmoracle19c.
Mudar para o
oracle
utilizador:sudo su - oracle
Antes de se ligar, defina a variável
ORACLE_SID
de ambiente :export ORACLE_SID=test;
Também deve adicionar a
ORACLE_SID
variável aooracle
ficheiro .bashrc do utilizador para inícios de sessão futuros com o seguinte comando:echo "export ORACLE_SID=test" >> ~oracle/.bashrc
Inicie o serviço de escuta oracle se ainda não estiver em execução:
lsnrctl start
O resultado deverá ter um aspeto semelhante ao seguinte exemplo:
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2020 03:23:49 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 System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora 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))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 18-SEP-2020 03:23:49 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora 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))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) The listener supports no services The command completed successfully
Crie a localização para a área de recuperação rápida:
mkdir /u02/fast_recovery_area
Ligar à base de dados:
sqlplus / as sysdba
Inicie a base de dados se ainda não estiver em execução:
SQL> startup
Defina variáveis de ambiente de base de dados para a área de recuperação rápida:
SQL> alter system set db_recovery_file_dest_size=4096M scope=both; SQL> alter system set db_recovery_file_dest='/u02/fast_recovery_area' scope=both;
Certifique-se de que a base de dados está no
ARCHIVELOG
modo de ativar as cópias de segurança online.Verifique o estado do arquivo de registos:
SQL> SELECT log_mode FROM v$database; LOG_MODE ------------ NOARCHIVELOG
Se o arquivo de registos estiver no
NOARCHIVELOG
modo, execute os seguintes comandos no SQL Plus:SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN; SQL> ALTER SYSTEM SWITCH LOGFILE;
Crie uma tabela para testar as operações de cópia de segurança e restauro:
SQL> create user scott identified by tiger quota 100M on users; SQL> grant create session, create table to scott; SQL> connect scott/tiger SQL> create table scott_table(col1 number, col2 varchar2(50)); SQL> insert into scott_table VALUES(1,'Line 1'); SQL> commit; SQL> quit
Fazer uma cópia de segurança para Ficheiros do Azure
Para fazer uma cópia de segurança para Ficheiros do Azure, conclua estes passos:
- Configure Ficheiros do Azure.
- Monte a partilha de ficheiros do Azure na sua VM.
- Faça uma cópia de segurança da base de dados.
- Restaure e recupere a base de dados.
Configurar Ficheiros do Azure
Nesta secção, vai fazer uma cópia de segurança da base de dados Oracle para Ficheiros do Azure com o Oracle RMAN. As partilhas de ficheiros do Azure são partilhas de ficheiros totalmente geridas que permanecem na cloud. Pode aceder aos mesmos através do protocolo SMB ou do protocolo NFS (Network File System).
Os seguintes procedimentos abrangem a criação de uma partilha de ficheiros que utiliza o protocolo SMB para montar na VM. Para obter informações sobre como montar com o NFS, consulte Criar uma partilha NFS.
Quando estiver a montar a partilha de ficheiros do Azure, utilize a opção cache=none
para desativar a colocação em cache de dados de partilha de ficheiros. Para garantir que o oracle
utilizador é o proprietário dos ficheiros criados na partilha, defina as uid=oracle
opções e gid=oinstall
.
Configurar a sua conta de armazenamento:
Na portal do Azure, selecione + Criar um recurso e, em seguida, procure e selecione Conta de Armazenamento.
No painel Criar conta de armazenamento :
- Em Grupo de recursos, selecione o grupo de recursos existente, rg-oracle.
- Em Nome da conta de armazenamento, introduza oracbkup1.
- Certifique-se de que a Localização está definida para a mesma região que todos os outros recursos no grupo de recursos.
- Defina Desempenho como Standard.
- Em Tipo de conta, selecione StorageV2 (fins gerais v2).
- Para Replicação, selecione Armazenamento localmente redundante (LRS).
Selecione o separador Avançadas. Em Ficheiros do Azure, defina Partilhas de ficheiros grandes como Ativadas. Selecione Rever + Criar e, em seguida, selecione Criar.
Quando a conta de armazenamento for criada, aceda ao recurso e selecione Partilhas de ficheiros.
Selecione + Partilha de ficheiros e, em seguida, no painel Nova partilha de ficheiros :
Em Nome, introduza orabkup1.
Defina Quota como 10240 gibibytes (GiB).
A quota reflete um limite superior para o qual a partilha de ficheiros pode aumentar. Uma vez que está a utilizar o armazenamento padrão neste exemplo, os recursos são pay as you go e não são aprovisionados. Assim, definir a quota para 10 tebibytes (TiB) não implica custos além do que utiliza. Se a estratégia de cópia de segurança exigir mais armazenamento, defina a quota para um nível adequado para conter todas as cópias de segurança.
Em Camadas, selecione Otimizado para transações.
Selecione Criar.
Quando a partilha de ficheiros for criada, selecione orabkup1 no painel Definições da partilha de ficheiros .
Selecione o separador Ligar para abrir o painel Ligar e, em seguida, selecione o separador Linux . Copie os comandos fornecidos para montar a partilha de ficheiros com o protocolo SMB.
Montar a partilha de ficheiros do Azure na VM
Crie o ponto de montagem:
sudo mkdir /mnt/orabackup
Configurar credenciais:
if [ ! -d "/etc/smbcredentials" ]; then sudo mkdir /etc/smbcredentials fi
Execute o seguinte comando. Substitua
<Your Storage Account Key1>
pela chave da conta de armazenamento que obteve anteriormente.if [ ! -f "/etc/smbcredentials/orabackup1.cred" ]; then sudo bash -c 'echo "username=orabackup1" >> /etc/smbcredentials/orabackup1.cred' sudo bash -c 'echo "password=<Your Storage Account Key1>" >> /etc/smbcredentials/orabackup1.cred' fi
Alterar permissões no ficheiro de credenciais:
sudo chmod 600 /etc/smbcredentials/orabackup1.cred
Adicione a montagem ao ficheiro /etc/fstab :
sudo bash -c 'echo "//orabackup1.file.core.windows.net/orabackup /mnt/orabackup cifs nofail,vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall" >> /etc/fstab'
Execute os comandos para montar a partilha de ficheiros do Azure com o protocolo SMB:
sudo mount -t cifs //orabackup1.file.core.windows.net/orabackup /mnt/orabackup -o vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall
Se receber um erro semelhante ao seguinte exemplo, o pacote CIFS (Common Internet File System) poderá não estar instalado no anfitrião linux:
mount: wrong fs type, bad option, bad superblock on //orabackup1.file.core.windows.net/orabackup
Para verificar se o pacote CIFS está instalado, execute o seguinte comando:
sudo rpm -qa|grep cifs-utils
Se o comando não devolver nenhuma saída, instale o pacote CIFS com o seguinte comando. Em seguida, execute novamente o
mount
comando para montar a partilha de ficheiros do Azure.sudo yum install cifs-utils
Verifique se a partilha de ficheiros está montada corretamente com o seguinte comando:
df -h
O resultado deve ter um aspeto semelhante a este exemplo:
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.3G 0 3.3G 0% /dev tmpfs 3.3G 0 3.3G 0% /dev/shm tmpfs 3.3G 17M 3.3G 1% /run tmpfs 3.3G 0 3.3G 0% /sys/fs/cgroup /dev/sda2 30G 9.1G 19G 34% / /dev/sdc1 59G 2.7G 53G 5% /u02 /dev/sda1 497M 199M 298M 41% /boot /dev/sda15 495M 9.7M 486M 2% /boot/efi tmpfs 671M 0 671M 0% /run/user/54321 /dev/sdb1 14G 2.1G 11G 16% /mnt/resource tmpfs 671M 0 671M 0% /run/user/54322 //orabackup1.file.core.windows.net/orabackup 10T 0 10T 0% /mnt/orabackup
Fazer uma cópia de segurança da base de dados
Nesta secção, vai utilizar o Oracle RMAN para fazer uma cópia de segurança completa da base de dados e dos registos de arquivo. Em seguida, escreva a cópia de segurança como uma cópia de segurança definida para a partilha de ficheiros do Azure que montou anteriormente.
Configure o RMAN para fazer uma cópia de segurança para o ponto de montagem Ficheiros do Azure:
rman target / RMAN> configure snapshot controlfile name to '/mnt/orabkup/snapcf_ev.f'; RMAN> configure channel 1 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s'; RMAN> configure channel 2 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
Neste exemplo, está a limitar o tamanho das peças de cópia de segurança RMAN a 4 GiB. No entanto, o valor da cópia de segurança
maxpiecesize
RMAN pode ir até 4 TiB, que é o limite de tamanho de ficheiro para partilhas de ficheiros padrão do Azure e partilhas de ficheiros premium. Para obter mais informações, veja Ficheiros do Azure metas de escalabilidade e desempenho.RMAN> configure channel device type disk maxpiecesize 4000G;
Confirme os detalhes da alteração da configuração:
RMAN> show all;
Execute a cópia de segurança. O seguinte comando utiliza uma cópia de segurança de base de dados completa, incluindo ficheiros de registo de arquivo, como um conjunto de cópias de segurança no formato comprimido:
RMAN> backup as compressed backupset database plus archivelog;
Efetuou agora uma cópia de segurança da base de dados online com o Oracle RMAN, com a cópia de segurança localizada no Ficheiros do Azure. Uma vez que está a armazenar as cópias de segurança no Ficheiros do Azure, pode aceder às mesmas a partir de outras VMs se precisar de clonar a base de dados.
Embora a utilização de RMAN e Ficheiros do Azure para a cópia de segurança da base de dados tenha muitas vantagens, o tempo de cópia de segurança e restauro está ligado ao tamanho da base de dados. Para bases de dados muito grandes, estas operações podem demorar muito tempo.
Uma alternativa é utilizar cópias de segurança de VM consistentes com aplicações através de Azure Backup. Este mecanismo utiliza tecnologia de instantâneo para realizar cópias de segurança rápidas, independentemente do tamanho da base de dados. A integração com um cofre dos Serviços de Recuperação fornece armazenamento na nuvem das cópias de segurança da Base de Dados Oracle, para que possa aceder às mesmas a partir de outras VMs e de outras regiões do Azure.
Restaurar e recuperar a base de dados
Encerre a instância oracle:
sqlplus / as sysdba SQL> shutdown abort ORACLE instance shut down.
Remova os ficheiros de dados da base de dados:
cd /u02/oradata/TEST rm -f *.dbf
Os seguintes comandos utilizam o RMAN para restaurar os ficheiros de dados em falta e recuperar a base de dados:
rman target / RMAN> startup mount; RMAN> restore database; RMAN> recover database; RMAN> alter database open;
Verifique se o conteúdo da base de dados está totalmente recuperado:
RMAN> SELECT * FROM scott.scott_table;
A cópia de segurança e a recuperação da base de dados Oracle Database 19c numa VM do Linux do Azure estão agora concluídas.
Elimine a VM
Quando já não precisar da VM, pode utilizar o seguinte comando para remover o grupo de recursos, a VM e todos os recursos relacionados:
az group delete --name rg-oracle