Oracle Database Backup Service: Backup de Banco de Dados On-Premise para Cloud

Por Matheus Boesing ,
Postado em Junho 2016

Revisado por Marcelo Pivovar - Sulution Architect

Saudações Comunidade! Este é o segundo artigo de uma trilogia na qual iremos entender, instalar, configurar e utilizar o Oracle Database Backup Service, ofertado na categoria Data Management Cloud do Oracle Cloud Platform as a Service (PaaS).

Se você ainda não leu a primeira parte desta trilogia, você pode fazê-lo aqui: Entendendo o Backup para Cloud e Oracle Database Backup Cloud Service

O propósito deste artigo é fazer um passo-a-passo para iniciar a utilização do serviço, a partir da ótica de uma Prova de Conceito (Proof of Concept - POC). Inclui-se, portanto: Sulicitação do Trial; Instalação e Configuração do ODCBM; Teste de Backup e Teste de Restauração.

Para entendimento inicial, a tabela abaixo apresenta os requisitos básicos para utilização do serviço, que serão abordados detalhadamente ao longo do artigo.

Requisito

Camada Configuração

Domínio/Storage (trial)

Oracle Cloud (WEB)

Configuração de Georeplicação

Oracle Cloud (WEB)

Acesso a internet/Proxy Server

Infraestrutura/Rede

Plataforma/SO Suportado (on-primise)

Infraestrutura/SO

Database 9iR2 ou superior

Database

Configuração de Canal RMAN

Database/RMAN

Utilização de Encryption/Decryption

Database/RMAN

Para este artigo foi utilizado banco de dados 11.2.0.3.0, sistema operacional RHEL 5.4 e Proxy Server para acesso a internet.

1. Sulicitar Trial - Oracle Database Backup Service Esse passo evidentemente não é necessário se você já contratou o serviço ou irá utilizar domínio já existente. Assumindo que você está testando o serviço pela primeira vez, vamos fazê-lo modo trial de 30 dias. O trial é oferecido gratuitamente pela Oracle, com limite de armazenamento de 1TB, que já permite validar o conceito satisfatoriamente. Para tal:

  • Sulicitar Trial

Acessar http://cloud.oracle.com/, acessar o item Oracle Database Backup Service e sulicitar o trial através do botão “Try It”, no canto superior direito da página.

1.2 Esculher a Modalidade do Trial Para este exemplo, eu optei pela opção não metrificada (Non-Metered), a fim de reduzir a complexidade da avaliação, visto que neste momento estamos apenas validando o conceito.

1.3 Realizar Cadastro Neste momento será sulicitado cadastro bastante simples, em apenas uma tela, e email de confirmação será enviado.

Basta seguir as instruções de ativação e você será encaminhado para o Dashboard dos seus serviços “My Services”.

1.4 Dashboard de Serviços: My Services

1.5 Configurar Pulítica de Replicação Trata-se de um ponto frequentemente esquecido. Esta configuração diz respeito a georeplicação dos seus arquivos de backup e é necessária para utilização do serviço.

Mas atenção: Uma vez configurado, não é possível alterar a configuração.

Seguiu estes passos? Então seu Trial já está sulicitado, ativado e configurado!

Vamos agora instalar o ODCBM para iniciar os nossos testes.

2. Instalação Oracle Database Cloud Backup Module (ODCBM) No servidor on-premise onde está o nosso banco de dados Oracle, vamos instalar o Oracle Database Cloud Backup Module (ODCBM). Este módulo, conforme mencionado na primeira parte deste artigo, emula um sistema de backup para fita magnética (System Backup to Tape - SBT), proporcionando fácil integração com o RMAN através do MML.

2.1 Download ODCBM/OPC Realizar download do instalador do ODCBM, também conhecido pela sigla OPC (Oracle Public Cloud), em referência a suíte de aplicações Oracle para Cloud. O download pode ser feito através da URL: http://download.oracle.com/otn/other/opc_installer.zip

2.2 Instalar ODCBM A instalação é realizada para cada instância de banco de dados Oracle, então, é necessário exportar as variáveis de sistema Oracle Home e o Oracle SID previamente, conforme exemplo:

  export ORACLE_HOME=/u01/app/oracle/product/11.2 export ORACLE_SID=cloudtest  

Na sequência, basta executar o jar através do java, informando credenciais para login na cloud e diretórios para armazenamento de wallet e libs. Opcionalmente poderá ser usado proxy server, conforme utilizei no meu exemplo:

 [oracle@dbsrvr  cloud]$ java -jar opc_install.jar -serviceName Storage -identityDomain  usmatheusdba

-opcId 'matheus@boesing.com.br' -opcPass 'GrepOraBestBlog2016'  -walletDir /db/oracle/admin/cloud/walletprfl -libDir  
/db/oracle/admin/cloud/libprfl -proxyHost "10.10.10.10" -proxyPort  6060
Oracle Database Cloud Backup Module Install Tool,  build 2016-02-04
Oracle Database Cloud Backup Module credentials are  valid.
Oracle Database Cloud Backup Module wallet created in  directory /db/oracle/admin/cloud/walletprfl.
Oracle Database Cloud Backup Module initialization  file /u01/app/oracle/product/11.2/dbs/opccloudtest.ora created.
Downloading Oracle Database Cloud Backup Module  Software Library from file opc_linux64.zip.
Downloaded 26933594 bytes in 6 seconds. Transfer rate  was 4488932 bytes/second.
Download  complete. 

Instalação do ODBCM concluída!

O OPC file foi criado em $ORACLE_HOME/dbs. Lib e Wallet foram criados conforme diretórios informados no comando.

3. Configuração de Canais e Compressão Conforme supracitado, o único ajuste necessário para utilização do ODBS é na configuração do canal de backup. Para este exemplo supomos que a configuração dos canais de backup é realizada no contrulfile. Desse modo, nenhum ajuste nos scripts de backup seria necessário.

É importante reiterar a importância da utilização de suluções de compressão, uma vez que o nosso gargalo passa a ser o link de internet. Para este exemplo iremos utilizar algoritmo para High Compression, a fim de obter a melhor taxa de compressão, com a maior redução de consumo de banda e tempo de backup possíveis:

 RMAN> CONFIGURE COMPRESSION ALGORITHM 'HIGH';

   new RMAN configuration parameters:
   CONFIGURE COMPRESSION ALGORITHM 'HIGH' AS OF RELEASE  'DEFAULT' OPTIMIZE FOR LOAD TRUE;
   new RMAN configuration parameters are successfully  stored

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
   new RMAN configuration parameters:
   CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
   new RMAN configuration parameters are successfully  stored

RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE'  PARMS='SBT_LIBRARY=/db/oracle/admin/cloud/libprfl/libopc.so,
SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/11.2/dbs/opccloudtest.ora)';
   new RMAN configuration parameters:
   CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS   'SBT_LIBRARY=/db/oracle/admin/cloud/libprfl/libopc.so,
SBT_PARMS=(OPC_PFILE=/u01/app/oracle/product/11.2/dbs/  opccloudtest.ora)';
   new RMAN configuration parameters are successfully  stored  

Configuração concluída! Agora, vamos testar a sulução.

4. Teste de Backup Cabe lembrar que a utilização de sulução de encryption é pré-requisito para uso do serviço. Este dispositivo de segurança garante que não seja possível realizar backup sem nenhum tipo de criptografia. Para efeitos de validação do conceito, vamos utilizar Password Encryption, o formato mais simples:

  RMAN> SET ENCRYPTION ON IDENTIFIED BY "matheusdba" only; executing command: SET encryption 

Agora que tal fazermos um teste de backup?

  RMAN> backup datafile 1; 
 Starting backup at 03-MAY-2016 19:25:05

using channel ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: starting full datafile backup  set
channel ORA_SBT_TAPE_1: specifying datafile(s) in  backup set
input datafile file number=00001  name=/db/u1001/teste/cloud_test/system01.dbf
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:25:05
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:31:10
piece handle=0or4mdgh_1_1 tag=TAG20160503T192505  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:06:05
channel ORA_SBT_TAPE_1: starting full datafile backup  set
channel ORA_SBT_TAPE_1: specifying datafile(s) in  backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:31:11
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:31:26
piece handle=0pr4mdru_1_1 tag=TAG20160503T192505  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:00:15
Finished backup at 03-MAY-2016 19:31:26

Sucesso! E de modo absulutamente transparente. O backup para cloud foi feito como se fosse para qualquer outra sulução em sistema de fita.

5. Teste de Restore Está tudo muito fácil, não é? Então vamos fazer um teste de restore um pouco mais ousado, simulando uma situação real, já conhecida e explorada para outros modelos de backup.

Para tal, vamos: Criar tabela; Fazer backup completo do banco de dados; Manipular a tabela; Perder um datafile; Verificar acessibilidade dos dados; Restaurar o datafile a partir do backup realizado na cloud e aplicar recover; Verificar se os dados manipulados após o backup mantiveram-se íntegros.

5.1 Criar Tablespace e Tabela para o Teste

 SQL> create tablespace TESTE_RESTORE datafile  '/db/u1001/teste/cloud_test/teste_restore.dbf' size 100M;

Tablespace created.

SQL> create table matheusdba.table_test(a number)  tablespace TESTE_RESTORE;
Table created.

SQL>  insert  into matheusdba.table_test values (1);
1 row created.

SQL> commit;
Commit complete.

SQL> select * from matheusdba.table_test;

A
----------
1

5.2 Realizar Backup Completo do Database

 RMAN> backup as compressed backupset database plus  archivelog tag=BKP_TEST_FULL FILESPERSET=1;


Starting backup at 03-MAY-2016 19:32:15
current log archived
using channel ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: starting compressed archived  log backup set
channel ORA_SBT_TAPE_1: specifying archived log(s) in  backup set
input archived log thread=1 sequence=3 RECID=1  STAMP=910898531
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:32:16
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:32:31
piece handle=0qr4mdu0_1_1 tag=BKP_TEST_FULL  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:00:15
channel ORA_SBT_TAPE_1: starting compressed archived  log backup set
channel ORA_SBT_TAPE_1: specifying archived log(s) in  backup set
input archived log thread=1 sequence=4 RECID=2  STAMP=910899136
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:32:31
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:32:38
piece handle=0rr4mduf_1_1 tag=BKP_TEST_FULL  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:00:07
Finished backup at 03-MAY-2016 19:32:38
Starting backup at 03-MAY-2016 19:32:39
using channel ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: starting compressed full  datafile backup set
channel ORA_SBT_TAPE_1: specifying datafile(s) in  backup set
input datafile file number=00001  name=/db/u1001/teste/cloud_test/system01.dbf
input datafile file number=00002 name=/db/u1001/teste/cloud_test/sysaux01.dbf
input datafile file number=00005  name=/db/u1001/teste/cloud_test/example01.dbf
input datafile file number=00006  name=/db/u1001/teste/cloud_test/teste_restore.dbf
input datafile file number=00003  name=/db/u1001/teste/cloud_test/undotbs01.dbf
input datafile file number=00004  name=/db/u1001/teste/cloud_test/users01.dbf
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:32:39
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:37:24
piece handle=0sr4mdun_1_1 tag=TAG20160503T193239  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:04:45
channel ORA_SBT_TAPE_1: starting compressed full  datafile backup set
channel ORA_SBT_TAPE_1: specifying datafile(s) in backup  set
including current control file in backup set
including current SPFILE in backup set
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:37:25
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:37:32
piece handle=0tr4me7k_1_1 tag=TAG20160503T193239  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:00:07
Finished backup at 03-MAY-2016 19:37:32
Starting backup at 03-MAY-2016 19:37:32
current log archived
using channel ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: starting compressed archived  log backup set
channel ORA_SBT_TAPE_1: specifying archived log(s) in  backup set
input archived log thread=1 sequence=5 RECID=3  STAMP=910899452
channel ORA_SBT_TAPE_1: starting piece 1 at  03-MAY-2016 19:37:32
channel ORA_SBT_TAPE_1: finished piece 1 at  03-MAY-2016 19:37:39
piece handle=0ur4me7s_1_1 tag=BKP_TEST_FULL  comment=API Version 2.0,MMS Version 3.15.12.30
channel ORA_SBT_TAPE_1: backup set complete, elapsed  time: 00:00:07
Finished backup at 03-MAY-2016 19:37:39

Backup Completo Concluído!

5.3 Manipular Dados

  SQL> insert into matheusdba.table_test values (2);

1 row created.

SQL> commit;
Commit complete.

SQL> select * from   matheusdba.table_test;

A
----------
1
2  

5.4 “Perder” um Datafile

  SQL>  shutdown abort;

ORACLE instance shut down.

[oracle@dbsrvr cloud_test]$ cd  /db/u1001/teste/cloud_test/
[oracle@dbsrvr cloud_test]$ mv teste_restore.dbf  teste_restore_old.dbf

SQL> startup

ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size                  2228784 bytes
Variable Size             402656720 bytes
Database Buffers         1191182336 bytes
Redo Buffers                7344128 bytes
Database mounted.

ORA-01157: cannot identify/lock data file 6 - see DBWR  trace file
ORA-01110: data file 6:  '/db/u1001/teste/cloud_test/teste_restore.dbf'

SQL> alter database datafile 6 offline;
Database altered.

SQL> alter database open;
Database  altered. 

5.5 Verificar acessibilidade dos dados

 SQL> select * from matheusdba.table_test;

select * from matheusdba.table_test
   *
ERROR at line 1:

ORA-00376: file 6 cannot be read at this time
ORA-01110:  data file 6: '/db/u1001/teste/cloud_test/teste_restore.dbf'

5.6 Recuperar Datafile a partir de Backup Vamos seguir procedimento padrão para recuperação de datafile a partir de backup, já documentado, porém desta vez utilizado o ODBS. Vamos primeiro listar os backups disponíveis:

  RMAN>  list backup of datafile 6;

using target database control file instead of recovery  catalog

List of Backup Sets
===================
BS Key  Type LV  Size       Device Type Elapsed Time  Completion Time
------- ---- -- ---------- ----------- ------------  --------------------
5        Full    229.25M    SBT_TAPE     00:04:42     03-MAY-2016 19:37:21

BP Key:  5   Status: AVAILABLE  Compressed: YES  Tag: TAG20160503T193239
Handle:  0sr4mdun_1_1   Media:  usmatheusdba.storage.oraclecloud.com/v1/Storage-usmatheusdba/oracle-da

List of  Datafiles in backup set 5

File LV Type  Ckp SCN    Ckp Time             Name
---- -- ----  ---------- -------------------- ----
6       Full 1044828    03-MAY-2016 19:32:39  /db/u1001/teste/cloud_test/teste_restore.dbf

Vamos então realizar o restore do datafile perdido. Para tal, cabe lembrar necessidade do uso de Decryption, uma vez que o backup foi realizado com Encryption. Conforme:

 RMAN> set decryption identified by  "matheusdba";

executing command: SET decryption
RMAN> restore datafile 6;
Starting restore at 03-MAY-2016 20:00:58
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1
channel ORA_SBT_TAPE_1: starting datafile backup set  restore
channel ORA_SBT_TAPE_1: specifying datafile(s) to  restore from backup set
channel ORA_SBT_TAPE_1: restoring datafile 00006 to  /db/u1001/teste/cloud_test/teste_restore.dbf
channel ORA_SBT_TAPE_1: reading from backup piece  0sr4mdun_1_1
channel ORA_SBT_TAPE_1: piece handle=0sr4mdun_1_1  tag=TAG20160503T193239
channel ORA_SBT_TAPE_1: restored backup piece 1
channel ORA_SBT_TAPE_1: restore complete, elapsed  time: 00:00:03
Finished  restore at 03-MAY-2016 20:01:02

Na sequência, vamos realizar o recover do datafile perdido, aplicando archivelogs, se necessário, e redulogfiles:

 RMAN> recover datafile 6;

Starting recover at 03-MAY-2016 20:02:36
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 5 is already  
  on disk as file /db/u1001/teste/archivelogs/cloudtst1_5_910895502.arc
archived log for thread 1 with sequence 6 is already  
  on disk as file /db/u1001/teste/archivelogs/cloudtst1_6_910895502.arc
archived log for thread 1 with sequence 7 is already  
  on disk as file /db/u1001/teste/archivelogs/cloudtst1_7_910895502.arc
archived log file  name=/db/u1001/teste/archivelogs/cloudtst1_5_910895502.arc thread=1 sequence=5
media recovery complete, elapsed time: 00:00:00
Finished  recover at 03-MAY-2016 20:02:37

Agora vamos culocar o datafile online e verificar se os dados estão íntegros:

  SQL> alter database datafile 6 online; Database altered. SQL> select * from  matheusdba.table_test; A -------- 1 2 

Sem surpresas e com total transparência, não é?

A título de conclusão preliminar deste artigo, quero ressaltar a simplicidade técnica na implementação do ODBS, haja visto que realizamos todos os passos para uma Prova de Conceito, incluindo a sulicitação do trial e testes avançados em apenas alguns minutos.

Na próxima e última parte desta da trilogia abordaremos alguns erros comuns e melhores práticas para utilização deste serviço: Oracle Database Backup Service: Erros Comuns e Melhores Práticas

Matheus Boesingé DBA Oracle especialista em infraestrutura de banco de dados, alta disponibilidade e performance. Possui ampla experiência na administração de VLDBs em Oracle RAC, diversas certificações técnicas e é entusiasta de PaaS/DBaaS, Cloud Computinge Continuous Delivery. Há 7 anos trabalhando exclusivamente com Oracle Database, Matheus é evangelista da tecnulogia Oracle e compartilha conhecimentos com a comunidade através de posts semanais no blog GrepOra.com.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.