4Dados Consultoria & Suporte

Oracle Partner Network

Backup Recover Full

Nesse artigo iremos abordar uma recuperação full do banco de dados. Para isso, utilizaremos o RMAN no procedimento de backup e restore.

É impressindível a um profissional Oracle conhecer essa ferramenta. Se você desconhece, minha sugestão é que você procure obter informações a respeito do funcionamento dela.

É possível acessá-la de duas maneiras:

  • Com catálogo
  • Sem catálogo

 

Esse a artigo se restringe ao acesso SEM USO DO CATÁLOGO, mas, sempre que possível, faça uso do catálogo ro RMAN. Para isso é necessário que, em outra máquina você possua um banco de dados para armazenar o catalogo. O colunista Rodrigo Almeida disponibilizou um artigo sobre o catálogo do RMAN no site iMasters.

Mãos obra…

Preparação do Ambiente

A primeira coisa a fazer, é confirmar a utilização do banco de dados no modo archivelog. Para isso, utilizando o SQLPLUS, siga conforme abaixo:

Caso não esteja, é necessário ativá-lo, para isso, consulte o artigo publicado anteriormente. De forma a melhor mostrar a utilização da restauração do banco de dados, iremos criar uma tabela com a seguinte estrutura:

Essa tabela será utilizada para a geração de registros a cada minuto, de forma a melhor exemplificar o recover database until time. Iremos utilizar o script abaixo para fazer a inserção do registro no banco de dados.

O script abaixo, é apenas uma forma de facilitar a chamada para a inserção dos registros.

É preciso fazer um backup full de um momento anterior ao do provável problema.

Ex: Você precisa voltar o banco de dados da empresa para o estado em que ele se encontrava no dia 21/12/2006 às 08:00. Imaginando que seus backups são realizados todos os dias às 19:00, significa dizer que é necessário voltar o backup que foi disparado no dia 20/12/2006 às 19:00 e aplicar os archivelogs até o dia 21/12/2006 às 08:00. Nesse momento, iremos precisar do RMAN para realizar o backup. Para acessar o utilitário, através da console, execute:

O comando SHOW ALL, nos mostra informações interessantes.

Existem alguns pontos a serem observados na configuração do RMAN. É de muita importância o backup do controlfle e do spfile. Para isso você deve configurar o autobackup do controlfile.

Isso automatiza o backup do controlfile, é recomendado que esteja ON. Outra configuração importante é a localização do backup do controlfile. Para isso configure a localização do backup do controlfile.

Conforme a configuração realizada no RMAN, o backup do arquivo de controlfile é composto por quatro informações:

C – Significa que o arquivo armazena o backup do controlfile e spfile

9999999999 – É o DBID da instância, muito utilizado quando é preciso recuperar o spfile.

YYYYMMDD – Ano, mês e dia de geração do arquivo.

99 – Seqüência de geração do arquivo, inicia em 00. A seqüência é zerada a cada dia.

Confirmando as modificações no RMAN.

Realizando o backup full

No exemplo acima, são utilizados dois canais C1 e C2. Percebam que, dependendo das características do hardware pode ser utilizado um número maior de canais, mas isso deve ser avaliado com cuidado para não gerar uma carga excessiva no ambiente. Após alocar os canais, foi utilizado o comando para a realização do backup, perceba também a utilização do comando COMPRESSED, é de se imaginar que esse comando irá compactar o backup. Isso irá gerar uma carga a mais no momento da recuperação, uma vez que será necessário descompactar o backup. Ao backup dos datafiles foi data uma TAG DB_LEVEL0_WHOLE, essa é uma forma de localizar o backup utilizando comandos do RMAN. A cláusula format determina onde os backups dos datafiles devem ser armazenados. O comando PLUS ARCHIVELOG executa o switch logfile de forma automática ao final do backup, e dessa forma armazenar os archives gerados após o início do backup. Perceba uma ligeira diferença na cláusula format dos archivelogs, isso foi feito de forma a facilitar a identificação do tipo de arquivo armazenado.

Foi criada uma tarefa no windows de forma a executar o arquivo script_insert.bat a cada minuto, durante 1 hora. Isso irá gerar 60 registros na tabela INSERT_TIME.

Agora que estamos com o ambiente preparado, vamos iniciar o processo de recuperação. A primeira coisa a fazer é restaurar o controlfile do último backup full, ou seja, o que foi realizado algumas linhas acima.

Fazendo o Restore do Controlfile

O controlfile possui principalmente informações referentes ao caminho dos datafiles, além de outras informações necessárias a recuperação. A primeira coisa a fazer é realizar o shutdown do banco de dados:

Em seguida, inicie o banco no modo nomount:

Execute a recuperação do controlfile:

Vale lembrar que, o controlfile recuperado deve ter sido gerado em um backup anterior ao problema. Quanto mais distante do momento que se deseja recuperar o banco de dados, mais arquivos de logs precisaram ser aplicados. Agora vamos iniciar o banco no modo mount:

Ainda no RMAN, vamos recuperar o banco de dados até o seu estado no dia 24/12/2006 às 18:30:00.

Restauramos os datafiles e agora iremos fazer o recover, que nada mais é do que a aplicação dos archivelog:

Agora iremos abrir o banco com RESET LOGS. O comando ALTER DATABASE OPEN RESETLOGS, irá criar os arquivos de redologs, de acordo com a configuração armazenada no controlfile.

Caso você deseje se aproximar um pouco mais do momento do problema, precisará restaurar o controlfile novamente, restaurar os datafiles, e recuperar o banco informando uma hora mais próxima. Vamos voltar o banco ao estado em que ele se encontrava as 18:45 do dia 24/12/2006.

Restaure o controlfile mais próximo.

Inicie o banco no modo mount.

Faça o restore dos datafiles.

Faça o recover até o momento desejado.

Abra o banco com resetlogs.

Fazendo o mesmo select feito anterior, teremos:

Acredito que demonstramos uma boa utilização do RMAN em processos de recover point in time. Vale lembrar que em bases relativamente grandes é preciso ter um certo cuidado em relação ao tempo informado para a recuperação. Imagine você restaurar 300GB de datafiles, e depois de 2, 3 ou 4 horas executar o comando recover com uma hora posterior ao momento desejado, você terá que fazer todo o processo novamente e talvez a empresa não possua mais janela para realizar a operação.

Espero ter ajudado um pouco na descoberta do RMAN, uma ferramenta indispensável em operações de backup e recover.