quinta-feira, 6 de agosto de 2009

Duplicate Database via RMAN

Olá pessoal, como vão todos?
Espero que bem.

Bom, hoje estava pensando no que escrever e me veio na mente um assunto que gosto muito, no qual ainda "engatinho", já li muitas coisas sobre, artigos, Blogs, Post's de forúm, etc e tal. Porém efetivamente tive poucas chances de utilizar essa ferramenta fantastica que é o RMAN ( Recovery Manager), e atualmente trabalho em um ambiente onde surgiram muitas oportunidades de colocar esses conhecimentos adquiridos em prática.

Pois bem, hoje então vou mostrar um pequeno passo a passo de como fazer um DUPLICATE database simples.

Antes de mais nada gostaria de agradecer ao meu amigo Rodrigo Almeida , que muito me ensina sobre essa ferramenta na qual ele é sem sombra de dúvidas um especialista.

Vamos lá?!?
Espero que apreciem.

DUPLICATE DATABASE via RMAN

Primeiramente vamos entender a natureza da utilização de um DUPLICATE, na maioria das vezes nós podemos nos valer dessa opção encontrada no RMAN dentre as inumeras opções de utilização da ferramenta, como uma forma rápida e pratica de criarmos um ambiente de teste, homologação ou até mesmo uma segunda base de produção que obedecerá ao mesmo propósito da base original ( DDL's, DML's, etc).

O RMAN em si é uma importante ferramenta de trabalho para o DBA, pois possibilitará uma melhor administração de seu ambiente em casos de Disaster Recover, assegurando assim mais confiabilidade de seus superiores, e uma maior disponibilidade dos aplicativos amarrados ao banco de dados principal da empresa.

Bom, dada essa pequena introdução, vamos ao processo.

1°) Criar o arquivos de Senha da Base DUPLICADA.

Para esta parte usaremos a seguinte syntax, onde criaremos o arquivo de senha [PWD File]:

orapwd file=/[path_do_arquivo]/[nome_do_arquivo] password= [passwd] entries=[numero]

Obs.: Por padrão costuma-se guardar o arquivos de senha no diretório $ORACLE_HOME/dbs/

Vejamos então as opções usadas:

ORAPWD : este é o aplicativo externo da Oracle que vem junto com a instalação padrão das versões de banco de Dados, é um executavel que contém um algoritmo que criar os arquivos contendo as senhas do seu banco de dados e a quantidade de logins que poderam ser feito como SYSDBA (entries)neste Database.

2°)Editando o TNSNAMES.ORA e o LISTENER.ORA

Nosso próximo passo é adicionar nos arquivos de Conexão do banco de dados as entradas da base duplicate ( tnsnames.ora e listener.ora ):

# Adicionando ao listener.ora

SID_LIST
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/[release])
(SID_NAME = DUP)
)

# Adicionando ao tnsnames.ora

DUP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = server1.tshcomputing.com)(PORT = 1521))
)
(CONNECT_DATA =
(ORACLE_SID = DUP)
)
)

# Recarregando o listener
lsnrctl reload

3°) Criando o arquivo de inicialização da base Duplicada

Para que possamos proseguir com os trabalhos precisaremos criar um Init.ora para a base Duplicada, qeu deve conter alguns minimos parametros, onde daremos inicio aos processos de duplicação, veja como fica o init :

DB_NAME=DUP
CONTROL_FILES=(/u02/oradata/DUP/control01.ctl,
/u02/oradata/DUP/control02.ctl,
/u02/oradata/DUP/control03.ctl)

# Esses parametros serão necessários pois estaremos mudando de estrutura de pastas
DB_FILE_NAME_CONVERT=(/u02/oradata/TSH1/,/u02/oradata/DUP/)
LOG_FILE_NAME_CONVERT=(/u01/oradata/TSH1/,/u01/oradata/DUP/)

# Caso necessario adeque esses dois parametros a sua blocagem e sua compatibilidade
DB_BLOCK_SIZE=8192
COMPATIBLE=xxx.xx.xx

4°) Conectando a instancia Duplicada

Agora faremos nossa conexão com a instancia para dar inicio ao procedimento de duplicate:

ORACLE_SID=xx; export ORACLE_SID

sqlplus /nolog
conn /as sysdba

Agora iremos criar um SPFILE para nossa base, que possibilitará que façamos algumas alterações de parametros dinâmicos do nosso Banco online, sem a necessidade de efetuarmos um SHUTDOWN.

create spfile from pfile='$ORACLE_BASE/admin/[inst_name]/pfile/init.ora

Vamos então colocar nossa instancia em modo NOMOUNT

startup force nomount;

6°) Iniciando o Duplicate

Com a nossa instancia iniciada podemos iniciar o processo via RMAN, devemos nos conectar na nossa base alvo (TARGET), no nosso catalogo ( CATALOG ) e é óbvio na base Auxiliar que é nossa DUPLICADA ( / ):

ORACLE_SID=zzz; export ORACLE_SID
rman TARGET sys/password@xxx CATALOG rman/rman@yyy AUXILIARY /

Uma vez devidamente conectados ao catalogo e a base que servirá como nosso alvo para o Duplicate, devemos efetuar o comando :

duplicate target database to xxx;

Onde o xxx indica o nome que você ira usar para dar vida a sua base duplicada. Este comando acima copia a base de dados do jeito em que a base principal se encontra, e criará a duplicada da mesma forma.

Ha outras opções como por exemplo duplicar a base a partir de um determinado periodo para trás é óvio, com a opção UNTIL TIME, veja :

duplicate tagert database to xxx until time 'sysdate-10';

Essa opção irá copiar a base com a situação de 10 dias atrás, muito util no caso de já terem ocorrido inumeras mudanças na base, e para não sermos obrigados a ter que voltar todo o backup , duplicariamos a base a situação da data desejada.

Bem é isso pessoal, como disse eu ainda estou dando os primeiros passos nessa área que acho fascinante, espero que apreciem e que não deixem de comentar.

Abraço á todos e Sucesso!!!!