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.