Para melhor visualização, recomendo resolução de no mínimo 1024 x 768 e navegador Mozilla Firefox


domingo, 7 de julho de 2013

RMAN - Abordando os tipos de compressão de backups disponíveis no Oracle 11g R2

Por Eduardo Legatti

Olá,

No artigo de Julho/2012 eu apresentei as diferenças e um breve comparativo entre os dois tipos de backups incrementais que podemos realizar com o RMAN (cumulativo vs. diferencial). No artigo deste mês irei também apresentar um comparativo, só que agora, em relação aos tipos de compressão de dados que o RMAN do Oracle 11g R2 tem a nos oferecer. O objetivo será medir e comparar a taxa de compressão e o tempo gasto nas operações de backup/recover.

Bom, até o Oracle 10g R2, o RMAN oferecia apenas a compressão do tipo BZIP2, que possui uma boa taxa de compressão e um consumo médio de CPU. No Oracle 11g R1, além do tipo de compressão BZIP2, surgiu também a opção de compressão usando o algoritmo ZLIB, que preza pela eficiência e menor consumo de CPU, mas possui uma taxa de compressão menor se comparado com a compressão do tipo BZIP2. O ZLIB é parte da option do Oracle Advanced Compression. No Oracle 11g R2, o tipo de compressão BZIP2 referente ao tipo de compressão existente no Oracle 10g R2, passou a ser chamada de BASIC. O resultado do SQL abaixo nos mostra os tipos de compressão de backups existentes no RMAN do Oracle 11g R2:

C:\>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Dom Jul 7 10:30:15 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select algorithm_name,
  2         initial_release,
  3         algorithm_description
  4    from v$rman_compression_algorithm;

ALGORITHM_NAME INITIAL_RELEASE ALGORITHM_DESCRIPTION 
-------------- --------------- -------------------------------------------
BASIC          10.0.0.0.0      good compression ratio
LOW            11.2.0.0.0      maximum possible compression speed
MEDIUM         11.2.0.0.0      balance between speed and compression ratio
HIGH           11.2.0.0.0      maximum possible compression ratio

Como dito anteriormente, o tipo de compressão BASIC utiliza o algoritmo BZIP2 (10g R2) na qual oferece uma boa taxa de compressão e um consumo médio de CPU. O tipo de compressão LOW corresponde a um algoritmo chamado LZO que, além de oferecer uma taxa de compressão menor, consome pouca CPU. O tipo de compressão MEDIUM utiliza o algoritmo de compressão ZLIB na qual oferece uma boa taxa de compressão e tem um consumo médio de CPU. Já o tipo de compressão HIGH utiliza o algoritmo de compressão BZIP2 (11g R2) na qual oferece a mais alta compressão. No entanto, o mesmo consome muita CPU. Vale a pena salientar que é necessário uma licença do Oracle Advanced Compression para utilizar os tipos LOW, MEDIUM e HIGH.

Enfim, o teste que irei realizar se resume em realizar o backup de uma tablespace que contém um arquivo de dados (data file) com tamanho de 500 MB. Vale a pena ressaltar que este arquivo de dados possui todos os seus blocos preenchidos, ou seja, todo o seu espaço foi utilizado. O primeiro backup que irei realizar não usará nenhuma compressão (NONE). Os backups seguintes irão utilizar respectivamente as compressões BASIC, LOW, MEDIUM e HIGH. Após a realização do backup, irei simular um processo de restore e recover de forma a computar o tempo gasto nas operações. Ao final irei apresentar um quadro comparativo.

Sem algoritmo de compressão (NONE)
 
C:\>rman target /

Gerenciador de Recuperação: Release 11.2.0.1.0 - Production on Dom Jul 7 10:36:45 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

conectado ao banco de dados de destino: BD02 (DBID=2725208301)

RMAN> configure device type disk clear;

RMAN> backup tablespace TBS_01 tag 'NONE';
Iniciando backup em 07/07/2013 10:36:59
canal alocado: ORA_DISK_1
canal ORA_DISK_1: SID=30 tipo de dispositivo=DISK
canal ORA_DISK_1: iniciando conjunto de backup completo de arquivo de dados
canal ORA_DISK_1: especificando arquivo[s] de dados no conjunto de backups
número do arquivo=00005 nome=E:\ORACLE\ORADATA\BD02\TBS_01.DBF do arquivo de dados de entrada
canal ORA_DISK_1: iniciando o componente 1 em 07/07/2013 10:37:00
canal ORA_DISK_1: componente 1 finalizado em 07/07/2013 10:37:35
handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_NONE_8W26BDQG_.BKP tag=NONE comentário=NONE
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:35
Finalizado backup em 07/07/2013 10:37:35

RMAN> sql 'alter tablespace TBS_01 offline';

instrução sql: alter tablespace TBS_01 offline

RMAN> restore tablespace TBS_01 from tag 'NONE';

Iniciando restore em 07/07/2013 10:37:38
utilizando o canal ORA_DISK_1

canal ORA_DISK_1: iniciando restauração de conjunto de backups de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados para restauração a partir do conjunto de backups
canal ORA_DISK_1: restaurando o arquivo de dados 00005 em E:\ORACLE\ORADATA\BD02\TBS_01.DBF
canal ORA_DISK_1: lendo da parte de backup E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_NONE_8W26BDQG_.BKP
canal ORA_DISK_1: handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_NONE_8W26BDQG_.BKP tag=NONE
canal ORA_DISK_1: restaurada a parte de backup 1
canal ORA_DISK_1: restauração concluída, tempo decorrido: 00:00:25
Finalizado restore em 07/07/2013 10:38:04

RMAN> recover tablespace TBS_01;

Iniciando recover em 07/07/2013 10:38:04
utilizando o canal ORA_DISK_1

iniciar recuperação de mídia
recuperação da mídia concluída, tempo decorrido: 00:00:01

Finalizado recover em 07/07/2013 10:38:05

RMAN> sql 'alter tablespace TBS_01 online';

instrução sql: alter tablespace TBS_01 online


Algoritmo de compressão (BASIC)

 
RMAN> configure device type disk backup type to compressed backupset;

RMAN> run {
2> configure compression algorithm 'BASIC';
3> backup tablespace TBS_01 tag 'BASIC';
4> sql 'alter tablespace TBS_01 offline';
5> restore tablespace TBS_01 from tag 'BASIC';
6> recover tablespace TBS_01;
7> sql 'alter tablespace TBS_01 online';
8> }
Iniciando backup em 07/07/2013 10:38:06
canal alocado: ORA_DISK_1
canal ORA_DISK_1: SID=30 tipo de dispositivo=DISK
canal ORA_DISK_1: iniciando conjunto de backup completo e compactado do arquivo de dados
canal ORA_DISK_1: especificando arquivo[s] de dados no conjunto de backups
número do arquivo=00005 nome=E:\ORACLE\ORADATA\BD02\TBS_01.DBF do arquivo de dados de entrada
canal ORA_DISK_1: iniciando o componente 1 em 07/07/2013 10:38:07
canal ORA_DISK_1: componente 1 finalizado em 07/07/2013 10:38:52
handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_BASIC_8W26DH2G_.BKP tag=BASIC comentário=NONE
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:45
Finalizado backup em 07/07/2013 10:38:52

instrução sql: alter tablespace TBS_01 offline

Iniciando restore em 07/07/2013 10:38:52
utilizando o canal ORA_DISK_1

canal ORA_DISK_1: iniciando restauração de conjunto de backups de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados para restauração a partir do conjunto de backups
canal ORA_DISK_1: restaurando o arquivo de dados 00005 em E:\ORACLE\ORADATA\BD02\TBS_01.DBF
canal ORA_DISK_1: lendo da parte de backup E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_BASIC_8W26DH2G_.BKP
canal ORA_DISK_1: handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_BASIC_8W26DH2G_.BKP tag=BASIC
canal ORA_DISK_1: restaurada a parte de backup 1
canal ORA_DISK_1: restauração concluída, tempo decorrido: 00:00:46
Finalizado restore em 07/07/2013 10:39:38

Iniciando recover em 07/07/2013 10:39:38
utilizando o canal ORA_DISK_1

iniciar recuperação de mídia
recuperação da mídia concluída, tempo decorrido: 00:00:00

Finalizado recover em 07/07/2013 10:39:39

instrução sql: alter tablespace TBS_01 online

Algoritmo de compressão (LOW) 
 
RMAN> run {
2> configure compression algorithm 'LOW';
3> backup tablespace TBS_01 tag 'LOW';
4> sql 'alter tablespace TBS_01 offline';
5> restore tablespace TBS_01 from tag 'LOW';
6> recover tablespace TBS_01;
7> sql 'alter tablespace TBS_01 online';
8> }
Iniciando backup em 07/07/2013 10:39:41
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backup completo e compactado do arquivo de dados
canal ORA_DISK_1: especificando arquivo[s] de dados no conjunto de backups
número do arquivo=00005 nome=E:\ORACLE\ORADATA\BD02\TBS_01.DBF do arquivo de dados de entrada
canal ORA_DISK_1: iniciando o componente 1 em 07/07/2013 10:39:41
canal ORA_DISK_1: componente 1 finalizado em 07/07/2013 10:39:56
handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_LOW_8W26HFWB_.BKP tag=LOW comentário=NONE
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:15
Finalizado backup em 07/07/2013 10:39:56

instrução sql: alter tablespace TBS_01 offline

Iniciando restore em 07/07/2013 10:39:57
utilizando o canal ORA_DISK_1

canal ORA_DISK_1: iniciando restauração de conjunto de backups de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados para restauração a partir do conjunto de backups
canal ORA_DISK_1: restaurando o arquivo de dados 00005 em E:\ORACLE\ORADATA\BD02\TBS_01.DBF
canal ORA_DISK_1: lendo da parte de backup E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_LOW_8W26HFWB_.BKP
canal ORA_DISK_1: handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_LOW_8W26HFWB_.BKP tag=LOW
canal ORA_DISK_1: restaurada a parte de backup 1
canal ORA_DISK_1: restauração concluída, tempo decorrido: 00:00:15
Finalizado restore em 07/07/2013 10:40:12

Iniciando recover em 07/07/2013 10:40:13
utilizando o canal ORA_DISK_1

iniciar recuperação de mídia
recuperação da mídia concluída, tempo decorrido: 00:00:00

Finalizado recover em 07/07/2013 10:40:13

instrução sql: alter tablespace TBS_01 online


Algoritmo de compressão (MEDIUM)
RMAN> run { 2> configure compression algorithm 'MEDIUM'; 3> backup tablespace TBS_01 tag 'MEDIUM'; 4> sql 'alter tablespace TBS_01 offline'; 5> restore tablespace TBS_01 from tag 'MEDIUM'; 6> recover tablespace TBS_01; 7> sql 'alter tablespace TBS_01 online'; 8> }
Iniciando backup em 07/07/2013 10:40:16
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backup completo e compactado do arquivo de dados
canal ORA_DISK_1: especificando arquivo[s] de dados no conjunto de backups
número do arquivo=00005 nome=E:\ORACLE\ORADATA\BD02\TBS_01.DBF do arquivo de dados de entrada
canal ORA_DISK_1: iniciando o componente 1 em 07/07/2013 10:40:16
canal ORA_DISK_1: componente 1 finalizado em 07/07/2013 10:40:41
handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_MEDIUM_8W26JJNJ_.BKP tag=MEDIUM comentário=NONE
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:00:25
Finalizado backup em 07/07/2013 10:40:41

instrução sql: alter tablespace TBS_01 offline

Iniciando restore em 07/07/2013 10:40:42
utilizando o canal ORA_DISK_1

canal ORA_DISK_1: iniciando restauração de conjunto de backups de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados para restauração a partir do conjunto de backups
canal ORA_DISK_1: restaurando o arquivo de dados 00005 em E:\ORACLE\ORADATA\BD02\TBS_01.DBF
canal ORA_DISK_1: lendo da parte de backup E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_MEDIUM_8W26JJNJ_.BKP
canal ORA_DISK_1: handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_MEDIUM_8W26JJNJ_.BKP tag=MEDIUM
canal ORA_DISK_1: restaurada a parte de backup 1
canal ORA_DISK_1: restauração concluída, tempo decorrido: 00:00:15
Finalizado restore em 07/07/2013 10:40:57

Iniciando recover em 07/07/2013 10:40:57
utilizando o canal ORA_DISK_1

iniciar recuperação de mídia
recuperação da mídia concluída, tempo decorrido: 00:00:00

Finalizado recover em 07/07/2013 10:40:58

instrução sql: alter tablespace TBS_01 online


Algoritmo de compressão (HIGH)
RMAN> run { 2> configure compression algorithm 'HIGH'; 3> backup tablespace TBS_01 tag 'HIGH'; 4> sql 'alter tablespace TBS_01 offline'; 5> restore tablespace TBS_01 from tag 'HIGH'; 6> recover tablespace TBS_01; 7> sql 'alter tablespace TBS_01 online'; 8> }
Iniciando backup em 07/07/2013 10:41:00
utilizando o canal ORA_DISK_1
canal ORA_DISK_1: iniciando conjunto de backup completo e compactado do arquivo de dados
canal ORA_DISK_1: especificando arquivo[s] de dados no conjunto de backups
número do arquivo=00005 nome=E:\ORACLE\ORADATA\BD02\TBS_01.DBF do arquivo de dados de entrada
canal ORA_DISK_1: iniciando o componente 1 em 07/07/2013 10:41:01
canal ORA_DISK_1: componente 1 finalizado em 07/07/2013 10:47:36
handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_HIGH_8W26KXJM_.BKP tag=HIGH comentário=NONE
canal ORA_DISK_1: conjunto de backups concluído, tempo decorrido: 00:06:35
Finalizado backup em 07/07/2013 10:47:36

instrução sql: alter tablespace TBS_01 offline

Iniciando restore em 07/07/2013 10:47:37
utilizando o canal ORA_DISK_1

canal ORA_DISK_1: iniciando restauração de conjunto de backups de arquivo de dados
canal ORA_DISK_1: especificando arquivo(s) de dados para restauração a partir do conjunto de backups
canal ORA_DISK_1: restaurando o arquivo de dados 00005 em E:\ORACLE\ORADATA\BD02\TBS_01.DBF
canal ORA_DISK_1: lendo da parte de backup E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_HIGH_8W26KXJM_.BKP
canal ORA_DISK_1: handle de componente=E:\ORACLE\FLASH_RECOVERY_AREA\BD02\BACKUPSET\2013_07_07\O1_MF_NNNDF_HIGH_8W26KXJM_.BKP tag=HIGH
canal ORA_DISK_1: restaurada a parte de backup 1
canal ORA_DISK_1: restauração concluída, tempo decorrido: 00:01:05
Finalizado restore em 07/07/2013 10:48:42

Iniciando recover em 07/07/2013 10:48:42
utilizando o canal ORA_DISK_1

iniciar recuperação de mídia
recuperação da mídia concluída, tempo decorrido: 00:00:00

Finalizado recover em 07/07/2013 10:48:43

instrução sql: alter tablespace TBS_01 online


Após a realização das operações acima, segue abaixo o resultado:

Compress Type LV Size       Device Type Elapsed Time Recovery Time
-------- ---- -- ---------- ----------- ------------ -------------
NONE     Full    497.04M    DISK        00:00:35     00:00:25
BASIC    Full    75.48M     DISK        00:00:45     00:00:46
LOW      Full    108.59M    DISK        00:00:15     00:00:15
MEDIUM   Full    91.63M     DISK        00:00:25     00:00:15
HIGH     Full    55.52M     DISK        00:06:35     00:01:05

De acordo com os resultados demonstrados acima, podemos perceber que os tipos de compressão BASIC e MEDIUM oferecem taxas de compressão relativamente próximas. No entanto, o tempo gasto para realização de backup e recover usando o tipo MEDIUM é bem menor em comparação com o tipo BASIC. O tipo LOW possui uma compressão menor se comparados com BASIC e MEDIUM, no entanto realiza de forma mais rápida operações de backup e recover. Em relação ao tipo HIGH, a taxa de compressão foi a maior em comparação com todas as outras, no entanto o tempo de backup foi absurdamente maior. Comparando o tipo HIGH com o tipo MEDIUM, acredito valer mais a pena utilizar a compressão MEDIUM do que utilizar a compressão do tipo HIGH. No mais, o gráfico abaixo nos oferece uma visão mais clara deste comparativo:



Google+

6 comentários:

DBA Fernando Silva disse...

Fala Eduardo, blz?
Cara, seus posts sempre me ajudam. Os de RMAN então, são essenciais pra mim.

Parabéns pelo blog.

Forte abraço

Eduardo Legatti disse...

Olá Fernando,

Obrigado pela visita!!!

Abraços e até mais

Legatti

Alexandre Coelho disse...

Eduardo parabéns pelo post , uma pergunta por favor : Qual a visão ou visões do rman vc usou para exibir o resultado final , com os tipos de compress, tempos

Eduardo Legatti disse...

Olá Alexandre,

Eu obtive essas informações durante a execução do próprio RMAN. Ao final da execução de cada backup e recovery ele demonstra o tempo gasto em cada operação. Como no ambiente em que eu trabalho costumo administrar muitos bancos de dados, geralmente eu faço uso de um catálogo de recuperação (recovery catalog) criado em um banco de dados separado especialmente para consolidar várias informações. Geralmente faço uso das seguintes views do catálogo de recuperação:

rc_backup_set_summary
rc_rman_backup_job_details
rc_rman_configuration
rc_database

Abraços e até mais

Legatti

Luiz Nobre disse...

Eduardo, ótimo post mas fiquei com uma dúvida no grafico no high pois voce colocou somente os segundos desprezando os minutos.

Eduardo Legatti disse...

Olá Luiz,

Obrigado por notar o erro no gráfico. Acho que comi mosca ao passar os valores para o gráfico ;-)

O gráfico foi atualizado.

Abraços e até mais ...

Legatti

Postagens populares