Data

19 jun, 2008

RMAN: Backup em NOARCHIVELOG

Publicidade

Olá amios! Depois de uma pausa nos artigos sobre RMAN, vamos dar continuidade na série sobre como efetuar backup e recover de banco de dados Oracle. Nos artigos anteriores foram discutidos diversos pontos sobre a utilização da ferramenta RMAN, como uma introdução à ferramenta, demonstração de um ambiente de backup e a criação de um catálogo de recuperação passo-a-passo, deste modo, para refrescar a memória os artigos podem ser vistos nos links abaixo:

RMAN: Introdução

RMAN: Preparação do ambiente

RMAN: Ambiente de backup

Os dois últimos artigos demonstraram como pode ser implementado um ambiente de backup e a criação de um catálogo de recuperação. Nesse artigo, vamos usar um dos bancos de dados mencionados (Artigo RMAN: Preparação do ambiente), com o Oracle Express Edition (XE) em ambiente Windows utilizando um catálogo de recuperação em ambiente Linux.

A nossa tarefa será executar um backup do banco de dados XE no modo NOARCHIVELOG. Sabe o que isso significa?

Quando um banco de dados Oracle está no modo NOARCHIVELOG, resumidamente, não há geração de archives, e conseqüentemente todas as alterações realizadas pelas transações não são armazenadas de forma sequênciais em arquivos (archives), ocorrendo uma reutilização dos grupos de redo logs, deste modo, o banco de dados no modo noarchivelog sofre as seguintes restrições:

  • O banco de dados não pode realizar backups incrementais.
  • Operações de restauração em Point-in-Time não serão permitidas, ou seja, se desejar recuperar o banco de dados até um determinado período de tempo, não irá conseguir.
  • Não pode trabalhar com o recurso de Flashback.
  • Sempre deverá restaurar o banco de dados a partir do último backup completo, em outras palavras, do seu último backup cold.

Em nosso exemplo, o banco de dados XE está trabalhando no modo NOARCHIVELOG, e para verificar isso, basta executar as seguintes tarefas:

Abra o SQL*PLUS e conecte com o usuário sys, com a role sysdba. Exemplo:

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Qui Mai 29 13:28:45 2008

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

SQL> conn sys as sysdba
Informe a senha:
Conectado.

Execute o comando para listar a seqüência de archives, veja:

SQL> archive log list;
Modo log de banco de dados                     Modo Sem Arquivamento
Arquivamento automático                         Desativado
Destino de arquivamento                        USE_DB_RECOVERY_FILE_DEST
A sequência de log on-line mais antiga     4
Sequência de log atual                    5

Veja que o resultado mostrou que o serviço de arquivamento e o modo do banco de dados estão em NOARCHIVELOG. Outro modo seria pelo SELECT abaixo:

SQL> select name, log_mode from v$database;

NAME      LOG_MODE
--------- ------------
XE        NOARCHIVELOG

Agora, que sabemos que o banco de dados está no modo NOARCHIVELOG, vamos iniciar os procedimentos de backup da base, para isso, devemos realizar o chamado BACKUP COLD (cópia fria), simplificando, uma cópia do banco de dados “offline”.

Com a utilização do RMAN, o backup cold é realizado com o banco de dados no estado MOUNT, onde conseguimos realizar a conexão com o catálogo e efetuar a cópia do spfile, control files e datafiles. O backup cold sempre deverá ser consistente, nunca deverá ser feito após um SHUTDOWN ABORT ou qualquer queda abrupta da base ou servidor, pois caso seja necessário sua restauração, não será possível confiar 100% na sua consistência, pois o Oracle Server irá pedir uma recuperção de Media Recovery.

Backup cold e RMAN

Após entendermos como funciona um backup cold e os principais arquivos que devem ser armazenados, vamos realizar um backup utilizando a ferramenta.

O banco de dados XE não está registrado no catálogo de recuperação, então, devemos registrar e conectar ao catálogo de recuperação veja os passos:

C:\>rman

Gerenciador de Recuperação: Release 10.2.0.1.0 - Production on Qui Mai 29 14:25:26 2008

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

RMAN> connect catalog rman/########@rman;

conectado ao banco de dados do catálogo de recuperação

RMAN> connect target sys;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-06004: erro ORACLE no banco de dados do catálogo de recuperação: RMAN-20001: target database not found in recovery catalog

Ao acessar a ferramenta RMAN, o primeiro comando foi para conectar-se ao catálogo de recuperação, que foi executado com sucesso. No segundo comando, tentamos conectar-se ao catálogo de recuperação, o RMAN nos retornou um erro, dizendo que não existia o banco de dados cadastrado, absolutamente normal, quando é a primeira vez que o banco de dados irá utilizar um catálogo de recuperação.

Assim que receber o erro, devemos então registrar o banco de dados no catálogo usando o comando REGISTER DATABASE pelo prompt do RMAN, desta forma:

RMAN> register database;

banco de dados registrado no catálogo de recuperação
iniciar ressinc. completa do catálogo de recuperação
ressinc. inteira completa

A partir desse momento, o banco de dados se encontra catalogado, podendo utilizar todos os recursos do rman, para iniciar a atividade de backup, iremos utilizar o script abaixo:

RMAN> run {
2> shutdown immediate;
3> startup force mount;
4> ´allocate channel t1 type disk format "E:\backup\XE\rman\BKP_COLD_%d_%t_%s.rman"´;
5> ´backup database include current controlfile tag "BKP_COLD"´;
6> backup spfile;
7> alter database open;
8> }

Vamos realizar uma analise rápida sobre os comandos acima.

Linha 1 – RUN { … }

Utilizado para agrupar um conjuntos de comandos do RMAN e executados de forma seqüencial.

Linha 2 – Shutdown immediate

Esse comando é responsável por baixar o serviço de banco de dados, realizando rollback das transações ativas, não permitindo novas conexões e o banco de dados irá desconectar todas as sessões de usuários. Permitindo assim, uma garantia na consistência dos dados.

Linha 3 – Startup force mount

Inicia a instância oracle no modo MOUNT (montado), onde não está disponível aos usuários e é permitida a leitura dos control files para controle do catálogo. A opção FORCE é utilizada em algumas ocasiões quando a instância sofre alguma pane no shutdown.

Linha 4 – ´allocate channel t1 type disk format “E:\backup\XE\rman\BKP_COLD_%d_%t_%s.rman;”´

Esse é o modo de alocação de canais de backup do RMAN de forma manual, definindo o caminho que será despejado o arquivo (E:\backup\XE\rman) e com as variáveis internas do RMAN, como %d, %t e %s, onde:

%d – Nome do banco de dados

%t – Especifica o time stamp do backup

%s – Seqüência do backupset gerado pelo RMAN.

O RMAN possui ainda mais uma variedade de opções de parâmetros e formas de utilização dos canais, que veremos em outras colunas.

Linha 5 – ´backup database include current controlfile tag “BKP_COLD;”´

Essa é a principal parte, onde é efetuado o backup do banco de dados por completo com a opção de incluir o atual arquivo de controle (control file). Por padrão, o backup do banco de dados é FULL (ou incremental level 0), ou seja, todos os blocos de dados.

Lembrando sempre de realizar o backup do control file, pode isso, utilizamos a opção INCLUDE CURRENT CONTROLFILE, pois ele é responsável em dizer qual SCN está para cada datafile, localização, seqüência do log e etc, sendo de extrema importância no momento da recuperação da instância.

A opção TAG ao final do comando é apenas para nomear o backup que está sendo realizado, podendo no momento do recover, realizar uma recuperação se baseando apenas no nome do backup que deseja restaurar.

Linha 6 – Backup spfile

Realiza o backup do Server parameter File, arquivo responsável pela inicialização da instância, onde se encontra os principais parâmetros do banco de dados. Caso o banco de dados não esteja trabalhando com SPFILE, terá erros, e em versões 8i também.

Linha 7 – Alter database open

Após a realização do backup por completo do banco de dados, essa opção permite abrir o banco de dados permitindo o acesso dos usuários.

Ao encerrar o backup, podemos já verificar os principais registros que foi gravado no catálogo de recuperação e analisar como anda as operações de backup e recover do banco de dados, abaixo, segue alguns comandos úteis que podemos utilizar dentro do catálogo.

RMAN> list backup;

Lista todos os backups do banco de dados.

RMAN> list backup summary;

Fornece as informações de backup sumarizado, para rápidas consultas, para identificar se está disponível, em disco ou fita, datas, tipos de backup e etc.

RMAN> report schema;

Relatório do “esqueleto” schema do banco de dados, como a localização, tamanho e tablespaces de cada datafile, tanto os permanentes e temporários.

RMAN> crosscheck backup of database;

Verifica qual backup está disponível para utilização, ele analisa todos os backups feitos no catalogo e checa se seus backupsets estão nos discos acessíveis para uma possível recuperação.

Ele irá dependente das configurações do catálogo como RETENTION POLICY, RECOVERY WINDOW e do tempo que seu backup ficará em disco ou fita. Para verificar os valores padrões, execute o comando:

RMAN> show all;

O comando SHOW ALL irá mostrar outros diversos parâmetros padrões do banco de dados no catálogo de recuperação, onde cada um exerce uma função diferente e importante no assunto de backup e recover, que iremos ver nas futuras colunas.

Concluindo a parte de backup em NOARCHIVELOG, compreendemos todos os principais pontos que devemos analisar quando um banco de dados está sem arquivamento e os principais passos para um backup sem errors. Na próxima coluna vamos realizar uma restauração do banco no modo NOARCHIVELOG com esse backup e utilizar mais recursos que o RMAN pode nos oferecer.

Até a próxima!

www.rodrigoalmeida.net