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

  • 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

  1. 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>
    
  2. Mude para o utilizador raiz:

    sudo su -
    
  3. Adicione o oracle utilizador ao ficheiro /etc/sudoers :

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. 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
    
  5. Antes de se ligar, defina a variável ORACLE_SIDde ambiente :

    export ORACLE_SID=test;
    

    Também deve adicionar a ORACLE_SID variável ao oracle ficheiro .bashrc do utilizador para inícios de sessão futuros com o seguinte comando:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. 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
    
  7. Crie a localização para a área de recuperação rápida:

    mkdir /u02/fast_recovery_area
    
  8. Ligar à base de dados:

    sqlplus / as sysdba
    
  9. Inicie a base de dados se ainda não estiver em execução:

    SQL> startup
    
  10. 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;
    
  11. 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;
    
  12. 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:

  1. Configure Ficheiros do Azure.
  2. Monte a partilha de ficheiros do Azure na sua VM.
  3. Faça uma cópia de segurança da base de dados.
  4. 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:

  1. Na portal do Azure, selecione + Criar um recurso e, em seguida, procure e selecione Conta de Armazenamento.

    Captura de ecrã a mostrar onde criar um recurso e selecionar uma conta de armazenamento.

  2. No painel Criar conta de armazenamento :

    1. Em Grupo de recursos, selecione o grupo de recursos existente, rg-oracle.
    2. Em Nome da conta de armazenamento, introduza oracbkup1.
    3. Certifique-se de que a Localização está definida para a mesma região que todos os outros recursos no grupo de recursos.
    4. Defina Desempenho como Standard.
    5. Em Tipo de conta, selecione StorageV2 (fins gerais v2).
    6. Para Replicação, selecione Armazenamento localmente redundante (LRS).

    Captura de ecrã que mostra informações básicas para criar uma conta de armazenamento.

  3. Selecione o separador Avançadas. Em Ficheiros do Azure, defina Partilhas de ficheiros grandes como Ativadas. Selecione Rever + Criar e, em seguida, selecione Criar.

    Captura de ecrã que mostra o separador para ativar partilhas de ficheiros grandes.

  4. Quando a conta de armazenamento for criada, aceda ao recurso e selecione Partilhas de ficheiros.

    Captura de ecrã que mostra onde selecionar partilhas de ficheiros para um recurso.

  5. Selecione + Partilha de ficheiros e, em seguida, no painel Nova partilha de ficheiros :

    1. Em Nome, introduza orabkup1.

    2. 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.

    3. Em Camadas, selecione Otimizado para transações.

    4. Selecione Criar.

    Captura de ecrã que mostra as seleções para adicionar uma nova partilha de ficheiros.

  6. Quando a partilha de ficheiros for criada, selecione orabkup1 no painel Definições da partilha de ficheiros .

  7. 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.

    Captura de ecrã que mostra o painel para aceder aos comandos para ligar uma partilha de ficheiros a um computador Linux.

Montar a partilha de ficheiros do Azure na VM

  1. Crie o ponto de montagem:

    sudo mkdir /mnt/orabackup
    
  2. Configurar credenciais:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. 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
    
  4. Alterar permissões no ficheiro de credenciais:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. 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'
    
  6. 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
    
  7. 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.

  1. 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';
    
  2. 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;
    
  3. Confirme os detalhes da alteração da configuração:

    RMAN> show all;
    
  4. 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

  1. Encerre a instância oracle:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Remova os ficheiros de dados da base de dados:

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. 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;
    
  4. 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

Passos seguintes

Criar VMs de elevada disponibilidade

Explorar exemplos da CLI do Azure para implementação de VMs