RMAN – Recovery Manager

 

O RMAN é o componente do Banco de Dados utilizado para Backup e Restauração,

O EM é a interface gráfica utilizada para funcionalidades do RMAN

 

O RMAN permite fazer backups de banco de dados, inclusive os arquivos de dados, arquivo de controle e redo logs, gerencia tarefas de backup e recuperação, executa backup incremental de mídia no nível do bloco, detecta blocos danificados durante a operação de backup e usa a compactação binaria durante a criação de backups, pode armazenar scripts, paraleliza o backup, pode recuperar os blocos de dados individualmente ao invés de recuperar todos de uma vez,

O RMAN possui um API para integrar com ferramentas de gerenciamento de mídia terceirizadas, As vantagens do uso do RMAN serão ainda maiores se você usar o recurso Oracle Managed Files ou a área de recuperação flash ( FLASH RECOVERY AREA )


 

Os componentes do RMAN são: Executável do Recovery Manager, Enterprise Manager, Sessões do Servidor, Banco de dados de Destino, Banco de Dados Auxiliar, Canal, Repositório do RMAN, Catálogo de recuperação e Media Management Library;

 

Podemos lembrar que o RMAN faz backup em fitas sem ferramentas de terceiros, que seria com o produto Oracle Secure Backup,

O começo seria uma conexão no Enterprise Manager que fornece uma interface gráfica para as funcionalidades do RMAN, após isso abriremos uma Sessão do Servidor, a Sessão do Servidor lê ou grava arquivos nos dispositivos de Midia ( Fita, Local ou Flash Recovery Area ), temos duas formas de ter os dados armazenados pelo Banco de dados de Destino e o Banco de dados Auxiliar o Banco de Dados de Destino, onde ficam as operações de Backup ou Restore, ficam no arquivo de controle, redo log, tamanho da base e estrutura física, essas informações são usadas pela Sessão do Servidor, durante a operação de backup e Restore, o Banco de dados Auxiliar é usado na duplicação do banco de dados de destino ele pode residir no mesmo host do seu pai ou em outro host diferente pode ser criado com o comando RMAN DUPLICATE, após obter todas as informações a Sessão do Servidor utiliza um Canal para efetivar a conexão com as mídias de gravação ( disco, local ou fita ) com o auxilio da MML ( Media Management Library ) para gravação dos dados em fitas, os canais podem ser alocados automaticamente ou pré configurados, sendo assim é criado um Repositório do RMAN no arquivo de controle do Banco de dados de Destino, temos também a opção de guardar estas informações no Catalogo de Recuperação que seria um banco de dados separado.

 

Etapas de Configuração do RMAN,

- Primeiro temos que determinar o local do repositório, que seria em um arquivo de controle ou em um catalogo de recuperação;

Arquivo de Controle ( CONTROLFILE )

O controlfile armazena tudo o que é necessário para o gerenciamento dos backups, restauração e recuperação do banco. Se o controlfile for usado como único local de repositório do RMAN, é recomendável que sejam tomadas algumas medidas extras de segurança.

Por exemplo:

- o ambiente deve ser configurado de forma a realizar automaticamente os backups do controlfile, através da cláusula CONFIGURE CONTROLFILE AUTOBACKUP ON;

- multiplexar o controlfile, mantendo cópias alternativas em outros locais;

- configurar a retenção do RMAN de acordo com a política de retenção. Por exemplo, se RECOVERY WINDOW OF 7 DAYS, então o controlfile deve ser configurado para 7 dias (control_file_record_keep_time=7).

Com o autobackup do controlfile configurado, o RMAN pode restaurar o spfile e o backup do controlfile e 'montar' o banco. Com o controlfile 'montado', é possível efetuar as demais tarefas de restore e recovery.

Obs.: O controlfile sempre irá armazenar estas informações, independente de usar o recovery catalog ou não.

Catalogo de Recuperação ( RECOVERY CATALOG )

                O recovery catalog armazena todas as informações que o controlfile possui em relação aos backups. Com o recovery catalog também é possível gerenciar, restaurar e recuperar o banco de dados . Como o recovery catalog está relacionado a um outro schema, podemos imaginar que há tabelas e views para armazenar estas informações e os diferenciais do recovery catalog giram em torno disso e estão relacionados à possibilidade de armazenar informações de vários bancos em suas tabelas, e não somente um, como o controlfile (um controlfile para cada banco, pois ainda que multiplexados eles possuem as mesmas informações). Além disso, é possível visualizar as informações sobre os backups destes bancos, criar relatórios, etc, no recovery catalog também é possível armazenar os scripts de backup estes scripts podem ser exclusivos de um banco ou globais, que podem ser executados em qualquer banco. 

Obs.: O ambiente onde estiver o recovery catalog também precisa de uma política de backup e multiplexação.

CRIANDO UM CATALOGO DE RECUPERAÇÃO

1.       Crie um Banco de dados a ser utilizado como catálogo de recuperação, Se preferir pode usar um banco já existente, lembrando que o Catálogo pode ser usado por vários banco de dados,

2.       No Banco de dados do catálogo de recuperação, crie um usuário que seja proprietário dos dados do catálogo de recuperação,

a.       Por Exemplo: Suponha que a base seja DBSEG e rec_cat seria a tablespace criada para armazenar os dados do catálogo,

 

$sqlplus sys/password@DBSEG as sysdba

 

SQL >    CREATE USER cat_rec IDENTIFIED BY fucker

2             TEMPORARY TABLESPACE temp

3             DEFAULT TABLESPACE rec_cat

4             QUOTA UNLIMETED ON rec_cat;

 

SQL > GRANT UNLIMITED ON rec_cat TO cat_rec;

 

3.       Conceder tambem a atribuição RECOVERY_CATALOG_OWNER ao proprietario do catálogo, essa atribuição fornece todos os privilégios para manter consultar o catálogo de recuperação,

 

GRANT RECOVERY_CATALOG_OWNER TO cat_rec;

 

4.       Inicie o RMAN e efetue o login como proprietario do catálogo

$ rman catalog cat_rec/fucker@DBSEG

RMAN > CREATE CATALOG TABLESPACE cat_rec;

5.       Conecte-se ao banco de dados de destino com o RMAN e register-o no catálogo de recuperação criado recentemente

$ rman target sys/password@DBTER catalog rman/fucker@DBSEG

RMAN > register database;

Importante fazer o backup da Base de dados e do catalogo de recuperação

 

- Segundo defina variáveis do Banco de dados e do ambiente

 

Definindo Variáveis de ambiente

Vamos logar na máqunia que será criado o banco de dados, e vamos configurar a variável de ambiente ORACLE_SID e conferir os valores de ORACLE_BASE e ORACLE_HOME.

ORACLE_SID

A variável ORACLE_SID é responsável em dizer ao Oracle Server qual é o nome do banco de dados que será utilizada, e como estamos criando a base, devemos mencionar o seu nome, que é o mesmo que o parâmetro DB_NAME. Exemplo:

[oracle@pelspos7h adhoc]$ export ORACLE_SID=ranet

[oracle@pelspos7h adhoc]$ echo $ORACLE_SID

ranet

Depois, vamos checar os valores de ORACLE_BASE e ORACLE_HOME.

[oracle@pelspos7h adhoc]$ echo $ORACLE_BASE

/u01/app/oracle

[oracle@pelspos7h adhoc]$ echo $ORACLE_HOME

/u01/app/oracle/product/10.2.0/db_1

 

- Terceiro Inicie o RMAN e conecte-se ao banco de dados de destino e opcionalmente ao catalogo de recuperação,

$ rman target cat_rec/DBSEG

- E por ultimo configure definições persistentes,



Politicas de Retenção: Uma politica de retenção descreve quais backups serão mantidos e por quanto tempo,

CONFIGURE RETENTION POLICY TO REDUNDANCY 1

Esta configuração significa que apenas um backup de arquivo deve existir em determinado momento, um backup será considerado obsoleto quando tiver sido feito o backup de uma versão mais recente dos mesmos aplicativos,

CONFIGURE DEFAULT TYPE TO DISK

Esta configuração determina o tipo  de dispositivo a ser alocado, o default é o disk mas podemos mudas para o SBT que seria fita

CONFIGURE CONTROLFILE AUTOBACKUP ON

Esta configuração define o auto backup dos arquivos de controle, isso é muito importante e temos também que sempre multiplexa-los

CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET

Esta configuração define a quantidade de canais que serão alocados em cada operação de BACKUP, COPY, RESTORE ou RECORVER, no momento esta configurado para alocar 4 canais quando executar algum dos comando acima,

Use o comando CLEAR para definir qualquer definição persistente como seu valor default

Destinos de Backup

Os destinos de backup são: Diretório de disco, MML (dispositivo em fita) e Area de Recovery Flash

Diretorio de Disco: Seria um diretório de disco local, qualquer diretório pode ser especificado como diretório de backup contanto que ele exista,

MML (dispositivo de fita): Geralmente usado na recuperação após desastres quando os backups em disco são perdido, geralmente eles são movidos off-line para fita por meio de interface de gerenciamentode mídia, para armazenar em fita o Oracle requer o Oracle Secure Backup ou um gerenciador de mídia, lembrando que o Banco de dados Oracle não precisa estabelecer conexão com o software MML quando copia para Disco, exemplo de script básico para backup,

Run {

# Allocating a channel of type ‘sbt_tape’ for serial device

                ALLOCATE CHANNEL ch1 DEVICE TYPE sbt;

                BACKUP DATAFILE 3;

}

 

Quando executa este commando o RMAN envia a solicitação de backup para a sessão do banco de dados que esta fazendo o backup. A sessão do banco de dados identifica o canal de saída como dispositivo de gerenciamento de mídia e solicita que o gerenciador carregue uma fita e grave a saída.

 

Area de Recovery Flash: Voce define o local e tamanho, os arquivos são nomeados automaticamente com o recurso Oracle Managed Files, os arquivos são retidos e os arquivos obsoletos serão deletados assim que precisamos de espaço e será gerado um log no arquivo de alerta, a área de recuperação flash e configurada de acordo com a definição do parâmetro de inicialização DB_RECOVERY_FILE_DEST e o que especifica o tamanho é DB_RECOVERY_FILE_DEST_SIZE,



 

Precauções se houver falta de espaço,

·         Delete os arquivos desnecessários da área de recuperação usando o RMAN

·         Faça backups frequentes da área de recuperação usando o RMAN

·         Altere a política de retenção do RMAN para reter backups durante um período menor

·         Altere a política de deleção de logs arquivados do RMAN

·         Adicione espaço em disco e aumente o valor do parâmetro de inicialização do banco de dados DB_RECOVERY_FILE_DEST_SIZE se a falta de espaço for frequente

Para fazer backup dos arquivos de log arquivados na área de recuperação e deletar esses arquivos após um backup bem sucedido uso o comando

                               BACKUP ARCHIVELOG ALL DELETE ALL INPUT;

O comando abaixo exibe o uso do espaço em disco da area de recuperação flash

V$FLASH_RECOVERY_AREA_USAGE




File Type: é o tipo de arquivo

Percent_space_used: é o tamanho usado pelos arquivos

Percent_space_reclaimable: é o tamanho usado pelos arquivos obsoletos

Number_of_files: é o numero de arquivos do tipo especificado

 

Fazendo Backup da Area de Recuperação Flash:

 

                RMAN > BACKUP RECOVERY AREA;

 

                               Este comando faz o backup de todos os arquivos de recuperação flash sem um arquivo anterior, fazendo backup incrementais e integrais, backups automáticos do arquivo de controle, os logs de arquivamento e as copias de arquivos de dados.

 

                RMAN > BACKUP RECOVERY FILES;

 

                               Este comando faz backup em disco de todos os arquivos de recuperação sem um backup anterior, arquivos de backup incrementais e integrais, backups automáticos do arquivo de controle, os logs de arquivamento e as copias de arquivos de dados.

 

O RMAN armazena no repositório as informações sobre o banco de dados de destino e suas operações de backup e recuperação,  o parâmetro;

 

                CONTROL_FILE_RECORD_KEEP_TIME

 

Especifica o numero mínimo de dias em que as informações do RMAN permanecem armazenadas no arquivo de controle antes de serem sobregravadas

 



 

NLS_LANG: é a lingugem que o banco de dados esta trabalhando,

Processes: As operações executadas em paralelo tem que aumentar os parâmetros do PROCESSES, neste parâmetro podemos aumentar o numero de conexões, aumentar o numero de processos,




 

Comandos interessantes:

 

Este comando grava a saída do RMAN em um arquivo de log

 

$             rman TRAGET sys/oracle

                LOG=$HOME/oradata/u03/rman.log APPEND

 

Este comando executa um arquivo de comando quando o RMAN é chamado

 

$             rman TARGET sys/oracle

                CMDFILE=$HOME/scripts/my_rman_script.rcv

 

Este comando estabelece conexão de banco de dados durante a inicialização do RMAN

 

$             rman TARGET SYS/sys_pwd@orcl CATALOG rman/rman@rcat

 

Alocação de Canais: um canal representa um fluixo de dados direcionado para um tipo de dispositivo, cada canal alocado estabelece uma conexão do executável do RMAN com uma instancia do banco de dados de destino, um processo do banco de dados para o banco de dados de destino é criado para cada canal alocado.

 

CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET

Esta configuração informa a quantidade de canais alocados = 4

A view abaixo informa os tipos de dispositivo aceitos

V$BACKUP_DEVICE