domingo, 7 de julho de 2013

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

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: