Repositório do RMAN: catálogo ou controlfile?
Em nosso último artigo ('Superprofissionais') nós interrompemos, por um momento, a série que aborda segurança de infra-estrutura em bancos de dados Oracle.
Aproveitando o intervalo, neste artigo nós vamos falar sobre o repositório do RMAN.
Definição
Entende-se por repositório do RMAN (Oracle Recovery Manager), o local onde são armazenadas informações sobre os metadados dos backups, archived logs e suas próprias atividades.
O local de armazenamento primário usado como repositório do RMAN é o controlfile (banco de produção, alvo do backup).
Mas também pode ser configurado um 'catálogo de recuperação independente' (recovery catalog), que é um schema que armazena o repositório do RMAN, contendo informações sobre um ou mais bancos.
É recomendável que o schema do recovery catalog seja armazenado em um outro database, montado em uma outra máquina, diferente de onde está rodando o banco alvo.
Essa recomendação faz sentido devido ao fato de ocorrência de uma eventual falha no banco alvo, ou na máquina onde este roda, seriam perdidas também as informações sobre os backups.
O recovery catalog é opcional.
Se não for configurado um recovery catalog, o RMAN irá usar o controlfile do banco alvo do backup como um repositório dos metadados do backup.
Os dados contidos no repositório do RMAN, tanto no controlfile como no recovery catalog, são usados para gerenciar os backups, restaurar e recuperar os bancos.
'Polêmica'
A 'polêmica' que eu me refiro aqui é referente ao uso de um ou outro repositório do RMAN.
Isso porque já existem controvérsias em relação ao controlfile, que muitos não o consideram como um repositório, embora a documentação oficial da Oracle e a prática nos diga que sim, que o controlfile pode ser usado como repositório do RMAN.
E também não vamos questionar se o recovery catalog, caso seja usado, deve ficar na máquina onde roda o banco de produção (alvo do backup) ou em um outro database, em uma outra máquina.
Eu entendo isso como fato consumado: o recovery catalog deve ficar em um outro database, em uma outra máquina diferente do banco alvo.
Vamos nos ater à opção entre um ou outro repositório, controlfile ou recovery catalog.
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.
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 alvo.
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.
Opinião
Uma opção não substitui a outra, e sim, complementa.
O uso de recovery catalog não invalida o controlfile.
E o controlfile pode não ser a maneira mais fácil de gerenciar backups de vários bancos alvo, pois é um pra um, um controlfile para cada banco.
Entendo que se houver apenas um banco para ser gerenciado, não há necessidade de usar um recovery catalog.
Também deve ser considerada a disponibilidade de um ambiente diferenciado para o recovery catalog, pois deve ser configurado em um outro banco, em uma outra máquina.
Mas, no caso de vários bancos, parece não haver maneira melhor para o gerenciamento dos backups.
A possibilidade de armazenar os scripts de backup no recovery catalog é formidável.
Finalizando
Bem, não sou radicalmente a favor ou contra qualquer uma das duas opções de repositório do RMAN.
Penso que cada uma tem sua utilidade, e poderia resumir dizendo que se há somente um banco para ser gerenciado, o controlfile é mais que suficiente e seguro para o gerenciamento de backups.
E se há mais de um banco, então já começa a fazer sentido pensar na possibilidade de usar um recovery catalog.
Anderson Rodrigo Farias
DBA Oracle
Betha Sistemas LTDA
http://www.betha.com.br