Vous êtes sur la page 1sur 5

Guia rpido para uso do RMAN

Page 1 of 5

Guia rpido para uso do RMAN


Voc continua usando exp e expdp como ferramentas de backup? Porque? Neste artigo ilustro que o uso do RMAN to facil quanto utilizar o exp ou expdp.

Voc continua usando exp e expdp como ferramentas de backup? Porque? Toda vez que assumo um ambiente de banco legado e me deparo com um backup sendo feito via Export (exp) ou Data Pump Export (expdp) ou ainda pior, "cold backup via shell script". E toda vez eu sou obrigado a perguntar "porque vocs esto fazendo seus backups com export"? As respostas so das mais variadas possveis, entre "no sei" e entre "no fomos ns que desenvolvemos a rotina", mas fico atnito quanto ouo respostas do tipo " mais fcil do que o RMAN". Esta semana isto ocorreu novamente. Bom, sinto em lhes informar, mas o uso do RMAN (Recovery Manager) to fcil e prtico que, na minha opinio, a unica resposta vlida para no usa-lo seria "eu no sei como se usa, por isto tenho medo de usar". Alm disto tal como consta na documentao do Oracle Database, o export (logical backup) pode ser utilizado como estratgia complementar para proteo dos dados, mas jamais como sendo a principal estratgia. Admitir que no sabemos algo no uma deficincia, afial de contas ningum nasce sabendo tudo, mas continuar em uma zona de conforto e no querer aprender a usar uma ferramenta to importante, neste caso em particular eu considero muito arriscado. Por isto como eu disse no comeo "DON'T PANIC", vamos desmistificar este dogma. Para comear preciso ter em mente que a principal funo de uma "ferramenta de backup" no apenas garantir um backup fcil e rpido, mas principalmente garantir uma restaurao rpida, eficiente e consistente dos dados perdidos. Como que voc tem garantido a consistncia dos seus dados usando "expdp"? Em 99% dos casos eu vejo scripts/rotinas de backup com "expdp" que no usam os parmetros corretos para garantir a consistncia da exportao de dados. Ento eis os 5 passos para comear a usar o Oracle Recovery Manager o quanto antes, afinal de contas, antes tarde do que nunca.

Prefcio
Para que seja possvel efetuar o backup do banco de forma "online", primeiramente necessrio ativar o "modo archivelog" para que os redologs sejam armazenados e nenhuma transao seja perdida durante a execuo do backup. Caso voc ainda no tenha feito isto deve se reiniciar a instncia de banco de dados da seguinte forma:
1 2 3 4 5 sqlplus / as sysdba SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL> alter database open;

Caso contrrio ser apenas possvel efetuar backups com o banco desligado, veja a documentao a respeito. Quanto ao destino padro dos Archivelogs e Backups eu costumo sempre que possvel utilizar a Flash Recovery Area (FRA). Para isto deve se configurar os parmetros "db_recovery_file_dest" (local de destino) e "db_recovery_file_dest_size" (tamanho mximo da rea). Quando o uso da FRA atingir o valor do tamanho mximo da rea definido o Oracle ir se encarregar de eliminar backupsets e archivelogs obsoletos automaticamente, veremos como fazer isto manualmente no parte 3 deste artigo. Como destino da FRA use sempre um disco (ou grupo de discos LUN, LVM, ASM, etc) que de preferencia no seja fsicamente o mesmo j utilizado por outro banco de dados vivo, a fim de evitar concorrncia durante o backup.

http://www.devmedia.com.br/guia-rapido-para-uso-do-rman/24131

4/12/2012

Guia rpido para uso do RMAN

Page 2 of 5

Eu considero como uma poltica muito simples e eficiente manter de 1 a 15 dias de backup em disco (para acesso mais rpido) e os demais em unidades externas, preferencialmente unidades de fita. Lembre-se que a poltica de reteno de dados deve ser definida junto ao seu cliente ou gestores de segurana de dados, etc. no tome decises sem antes consultar e discuti-las com os demais responsveis pela segurana dos dados.

1) Bem vindo ao maravilhoso mundo novo, entre nele sem medo


Para se conectar no Recovery Manager como "sysdba" basta usar o comando "rman target /", mais fcil impossvel:
1 sh> rman target /

Ao se conectar deve aparecer uma mensagem informando "connected to target database: (DBID=)". importante anotar o nmero do DBID em um local seguro, pois ele pode ser necessrio no futuro. Existem diversas opes para o comando "rman" caso voc use uma opo invlida, tal como "rman help" sero exibidas as opes vlidas. Leia a documentao. Uma vez dentro da ferramenta possvel se fazer tudo que se deseja com relao a backup e recuperao de dados. E o Guia de Referencia possui uma relao de todos os comandos da ferramenta.

2) Configure, se quiser, apenas uma vez


O mais importante que deve ser lembrado que estas configuraes so persistentes, ou seja, uma vez atribudo um determinado valor ele no precisa ser reconfigurado a cada execuo. Para exibir a configurao atual da ferramenta execute:
1 RMAN> SHOW ALL;

Todos os comandos listados podem ser reexecutados com outros valores para que a alterao seja feita. A princpio basta que sejam reconfigurados os seguintes valores:
1 RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

Este comando informa o RMAN que ele sempre que um backup for feito ele tambm deve extrair um backup dos arquivos "controlfile" e "spfile" automaticamente ao fim do backup.
1 RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;

Este comando define a poltica de reteno de backups para uma janela de 2 dias. Veremos que esta configurao torna muito fcil a remoo dos backups antigos. Ao definir o tamanho da janela deve se levar em conta o espao disponvel para armazenamento dos backups, portanto ajuste de acordo com o espao que houver disponvel no seu ambiente. Caso voc no queira utilizar a Flash Recovery Area para armazenar seus backups possvel se alterar o destino padro dos backups atravs do comando:
1 RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/adirectory/anotherdirectory/%U'

Acho que no preciso dizer que deve se ler a documentao para um entendimento completo dos parmetros e opes de configurao.

3) Executando um backup simples em apenas 1 linha, ou talvez 2


Agora, toda vez que se desejar fazer um backup, basta executar um simples comando:
1 RMAN> BACKUP DATABASE;

Sinceramente me diga, quando isto mais complicado do que um expdp e todos aqueles parametros: FULL, SCHEMAS, FLASHBACK_SCN ou FLASHBACK_TIME (muitos

http://www.devmedia.com.br/guia-rapido-para-uso-do-rman/24131

4/12/2012

Guia rpido para uso do RMAN

Page 3 of 5

esquecem destes 2 para manter os dados consistentes, deixando o "backup lgico" Completamente intil), DUMP_FILE, LOG_FILE, etc? Este backup ser dividido em um ou mais "backup sets" (guarde bem este nome), que so conjuntos de datafiles, archivelogs, etc., por padro cada "backupset" formado por 1 "backup piece" que consiste em um formato proprietrio de arquivo. A grosso modo, tendo o(s) backupset(s) e os archivelogs possvel restaurar o banco para qualquer "ponto no tempo" da vida do banco de dados. Tudo bem, vou ser sincero, eu menti um pouco, que minhas rotinas de backup normalmente consistem em 3 linhas:
1 2 3 RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE; RMAN> DELETE NOPROMPT OBSOLETE; RMAN> SQL "alter database backup controlfile to trace as /adirectory/controlfile.txt"

A opo "incremental level 0" eu costumo usar sempre, o que me permite decidir se quero tornar os backups parte de uma poltica de backup incremental do dia para a noite. No vou me aprofundar neste assunto no momento, caso no esteja familiarizado busque na documentao. J o comando "delete noprompt obsolete" para remover qualquer backup e archivelog que no se enquadre na poltica de reteno. Como falei na etapa 2, a configurao de uma janela de reteno torna muito fcil a limpeza dos backups antigos, ou seja, todos os backups e archivelogs que j estejam "obsoletos" (fora da janela de reteno) so apagados com 1 simples comando. E o SQL "alter database backup controlfile to trace" gera uma verso em texto, caso o controlfile precise ser recriado manualmente. Confie em mim, isto pode ocorrer. Uma regra que valida sempre em qualquer situao tanto nas reas de TI quanto na vida real, quanto mais simples e claro for um sistema mais fcil de entende-lo, mante-lo e menos sujeita a falhas ele se torna. Tente manter suas rotinas de backup sempre o mais simples e diretas possveis configuraes de destinos, formatao, parallelismo, etc pode ser feita com o comando "CONFIGURE" e persistidas evitando scripts imensos para backups padronizados. Outra recomendao importante, no adianta fazer backup dos archivelogs para dentro da prpria Flash Recovery Area. Se ela j o destino dos archivelogs, para que copia-los para onde eles j esto? Faz sentido sim fazer backup dos archivelogs para um outro destino em disco, ou servidor de arquivos remoto, ou unidade de fita, etc. Os archivelogs j fazem parte da poltica de backup, por tanto no faa "backups de backups" sem a devida necessidade. Duas recomendao simples de performance para o backup: Evitar que o destino dos backup seja o mesmo disco onde esto os dados, evitando um "gargalo" tal como ja foi dito; Evitar que o destino inicial do backup seja uma unidade remota (ex. NFS) em uma rede de banda estreita e/ou trfego intenso; A ideia sempre fazer o backup do banco de forma rpida, para evitar um longo tempo de conteno de leitura dos datafiles. Eu costumo fazer um primeiro backup do database (ou seja, datafiles, controlfile e spfile) em disco, tal como ilustrei acima, e efetuar backup dos backupsets e archivelogs para unidades externas (fita ou NFS) usando os comandos "backup backupset" e "backup archivelog" (no vou abordar este script aqui pois ele depende da mdia de destino do backup), sendo que se for fazer via NFS recomendo que seja atravs de uma rede de banda Gigabit (ou superior) dedicada exclusivamente para trfego de backup. E por fim, para verificar se temos backup de todos os arquivos do database podemos utilizar o comando:
1 RMAN> REPORT NEED BACKUP;

4) Encontre e valide backups sem complicaes


Para listar seus backups voc basicamente ir utilizar o comando "LIST" em suas diversas variaes. Um resumo geral dos seus backups pode ser visto com o comando:

http://www.devmedia.com.br/guia-rapido-para-uso-do-rman/24131

4/12/2012

Guia rpido para uso do RMAN

Page 4 of 5

RMAN> LIST BACKUP SUMMARY;

J para obter mais detalhes sobre o contedo e local dos seus backups execute o comando:
1 RMAN> LIST BACKUP;

Este comando lhe trar o valor descrito como "Piece Name", que indica o nome do arquivo onde se encontra aquele "pedao" do backup. Outro dado importante nesta relao o valor "Tag", pois varias operaes podem ser feitas utilizando-se este valor, tais como validao, remoo e restore. O RMAN tambm uma excelente ferramenta para encontrar possveis corrues do banco de dados, veja a documentao e procure a referencia dos comandos "VALIDATE DATABASE" e "BACKUP DATABASE ... VALIDATE". Mas tendo em mente que a funo principal garantir um restore de dados considerada uma boa prtica testar peridicamten se os backups no esto corrompidos. Assim usamos a opo VALIDATE tal como no comando abaixo:
1 RMAN> RESTORE DATABASE VALIDATE;

Este comando ir efetuar uma leitura completa dos backupsets necessrios para restaurar todos os datafiles, controlfiles e spfiles do banco, sem escreve-los em disco. Mas tambm uma boa prtica de tempos em tempos se efetuar restores e recover completo do banco de dados em um servidor/host, assim testando a validade do seu backup e deixando voc mais preparado caso o pir venha a acontecer. Para isto recomendo a leitura do seguinte documento.

5) RMAN na hora H - Restore e recover


Ningum deseja perder seus dados, mas um fato inegvel que mais cedo ou mais tarde isto pode acontecer. O Recovery Manager possui diversas opes de restore/recover de falhas de mdia, com ele possvel restaurar desde 1 unico bloco de dados corrompido, um datafile perdido, at o banco de dados inteiro. importante ter em mente que se houve apenas a corrupo de 1 unico bloco, no existe necessidade de se restaurar todo o banco de dados. Por isto importante que se leia atentamente a documentao sobre "Preparao e Planejamento da Estratgia de Restore e Recover" e tambm as informaes a respeito de BLOCKRECOVER. Para demonstrar o processo de restaurao ilustraremos um caso muito ruim, no o pior, mas um caso de perda total do banco de dados. Lembramos aqui que existen dezenas se no centenas ou milhares de cenrios possveis para um restore de banco de dados, por isto importante estudar e conhecer todas as funcionalidades para que as decises corretas sejam tomadas no momento de se efetuar a restaurao. Cenrio: digamos que tenha sido perdido o storage, ou os discos, onde estavam todos os arquivos que compe o database (datafiles, controlfiles e redologs). Apenas se salvando o ORACLE_HOME, o SPFILE (que estava no ORACLE_HOME) e a Flash Recovery Area Supondo que o destino original dos arquivos j esteja pronto para recebe-lo novamente (filesystems formatados e montados, ou grupo ASM criado e montado, etc.) Ento para restaurarmos todo o banco de dados ao seu destino original, devemos abrir uma sesso do RMAN e podemos executar os seguintes comandos, aqui explicados passo a passo:
1 2 RMAN> SET DBID <nmero do DBID>; RMAN> STARTUP FORCE NOMOUNT;

Uma vez que a instncia esteja inicializada o RMAN saber onde encontrar a Flash Recovery Area pelo parametro "db_recovery_file_dest".
1 RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

Este comando efetua o restore do controlfile, pois dentro dele que esta o repositrio do RMAN que contm o catalogo de todos os backups, e sem ele a ferramenta no saberia quais backupsets precisam ser restaurados, ou onde eles se encontram.

http://www.devmedia.com.br/guia-rapido-para-uso-do-rman/24131

4/12/2012

Guia rpido para uso do RMAN

Page 5 of 5

RMAN> ALTER DATABASE MOUNT;

Com a montagem do banco (leitura do controlfile) permitimos que o RMAN tome conhecimento do repositrio de catalogo dos backups.
1 RMAN> RESTORE DATABASE PREVIEW;

Este comando lista todos os backupsets que sero utilizados para restaurar e recuperar o banco de dados por completo. Pode ser til checar se todos os backup pieces e archivelogs esto disponveis antes de iniciar o processo de recuperao.
1 RMAN> RESTORE DATABASE;

Efetua o restore completo dos datafiles que no estejam em seu destino e com o SCN apropriado.
1 RMAN> RECOVER DATABASE UNTIL CANCEL;

a ao que atualiza/sincroniza os datafiles para manter a integridade dos dados. Podemos dizer a grosso modo que com a execuo do recover as transaes so "refeitas" em todo o banco, aplicando os arquivelogs necessrios (e redologs se ainda existirem ao menos 1 cpia disponvel) at o ultimo estado vlido conhecido, fazendo com que o banco de dados esteja apto a ser aberto. Caso estejam faltando archivelogs e/ou apenas os redologs dizemos que este um "recover incompleto", pois algumas transaes sero perdidas. Neste caso importante informar aos responsveis pelas aplicaes at que momento foi possvel se recuperar os dados, pois talvez algumas atividades tenham que ser refeitas por parte dos usurios.
1 RMAN> ALTER DATABASE OPEN RESETLOGS;

Caso os redologs tenham sido perdidos (que na minha experincia o caso mais comum) o banco de dados aberto novamente com o uso do "OPENRESETLOGS". Aps isto o procedimento de Restaurao e Recuperao completa do banco finalizado. E os usurios podero voltar a utilizar as aplicaes normalmente.

Eplogo
O repositrio principal do catalogo de recuperao (RMAN REPOSITORY) fica dentro do prprio "control file" do database, e por tanto no necessrio ficar inventando formas de catalogar e indexar seus arquivos de dump ou cpias de datafiles dos cold backups com scripts mirabolantes. Mas de qualquer forma aconselhvel criar um repositrio externo, em uma base de dados Oracle que de preferencia esteja em outro servidor, para isto leia a documentao. Para se aprofundar no assunto, arregace as mangas e leia os manuais: Documentao Bsica Backup/Recovery Oracle 10gR2 Documentao Avanada Backup/Recovery Oracle 10gR2 Guia de referencia do RMAN p/ Oracle 10gR2 - sintaxe dos comandos

PS.: Este uso bsico vlido para diferentes verses do Oracle Database, mas recomendo que se leia sempre a documentao especfica da verso em uso. Neste artigo nos baseamos na verso 10gR2.

http://www.devmedia.com.br/guia-rapido-para-uso-do-rman/24131

4/12/2012

Vous aimerez peut-être aussi