Recovery Catalog

As informações relativas a backup e recovery, do RMAN, ficam armazenadas no control file do próprio database em questão.

Essas informações não ficam lá pra sempre, pois tem questões relativas a espaço, tempo e etc. Também, se perdemos o control file, perdemos qualquer informações relativas a backup.

Para contornar esses tipos de problemas, temos a opção de criar um Recovery Catalog. O Recovery Catalog fica em um schema em um database separado. Dessa forma, podemos centralizar as informações de diversos bancos em um único lugar, e sem limite de quantidade de registros ou de tempo.

As views no schema do recovery catalog são bem documentadas e podemos usar para gerar relatórios sobre os backups de cada database. E também, temos algumas features que só são possíveis com o uso do recovery catalog. Com ele podemos usar o parâmetro KEEP, onde parametrizamos por quanto tempo o backup deve ser armazenado, independente das configurações de retention que foi visto no post passado. Podemos usar KEEP FOREVER ou KEEP com um tempo maior que um ano, coisas que seriam impossíveis sem o recovery catalog.

Outro benefício é armazenar e utilizar scripts que ficam no recovery catalog, isso só é possível com o recovery catalog.

Também, podemos recriar o control file com as informações no recovery catalog.

Para começar, vamos criar um schema onde irá ficar o recovery catalog. Isso é bom fazer em um database separado apenas para esse fim. Você não precisa de licença para esse tipo de banco, desde que os bancos que ele se conecta para fazer o catalog estejam devidamente licenciado.

O processo é bem simples, vamos criar um tablespace dedicado ao recovery catalog, criar o usuário queserá o owner e por último criar o recovery catalog. O Oracle database onde fica o recovery catalog é igual a qualquer outro. Vamos ao exemplo:

SQL> create tablespace rcat_ts;

Tablespace criado.

SQL> create user rco identified by oracle default tablespace rcat_ts quota unlimited on rcat_ts;

Usuario criado.

SQL> GRANT RECOVERY_CATALOG_OWNER TO rco;

Concess?o bem-sucedida.

SQL> exit
Desconectado de Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

$ rman catalog rco@rcat

Recovery Manager: Release 19.0.0.0.0 - Production on Tue May 19 17:51:12 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

recovery catalog database Password:
connected to recovery catalog database

RMAN> CREATE CATALOG;

recovery catalog created

Depois que o recovery catalog tiver sido criado, vamos registrar os nossos target databases no catálogo, o processo é bem simples e só precisa ser feito uma única vez. Fazendo isso, o database manterá o metadata tanto no control file como no recovery catalog. Para isso, devemos conectar ao target database que é o que será registrado, e também ao catalog. Veja o exemplo:

$ rman target / catalog rco@rcat

Recovery Manager: Release 19.0.0.0.0 - Production on Fri May 22 15:01:44 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDB2 (DBID=787970443)
recovery catalog database Password:
connected to recovery catalog database

RMAN> REGISTER DATABASE;

database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

RMAN>

Após ser executado o comando REGISTER DATABASE, o target database registra esse banco no recovery catalog e sincroniza as informações atuais existentes no seu controlfile com o catalog. Esse processo é feito apenas uma vez, de se registrar o banco. Mas sempre que for executar algo no rman, além de se conectar no target database, também deveremos nos conectar no catalog conforme exemplo acima. Dessa forma termos as informações relativo aos backups também no catalog além do control file.

O database onde se encontra o recovery catalog é um banco como qualquer outro, e por isso também necessita de backups.

Todo o processo do recovery catalog e também o backup do database onde se encontra o recovery catalog é ilustrado com a imagem abaixo:

Para catalogar backups já existentes é bem simples, é da mesma maneira que faríamos utilizando apenas o control file. Segue alguns exemplos:

CATALOG START WITH '/disk1/backups';
CATALOG RECOVERY AREA;

Uma das vantagens de se usar o recovery catalog é de armazenar e executar scripts. Sem ele, devemos criar aquivos no sistema operacional onde podemos chamar eles dentro do RMAN de duas formas. Veja como seria:

$ echo 'DELETE OBSOLETE;' > teste_script.rman
$ cat teste_script.rman
DELETE OBSOLETE;
[oracle@terciocosta ~]$ rman target / cmdfile=teste_script.rman

Recovery Manager: Release 19.0.0.0.0 - Production on Fri May 22 15:16:22 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDB2 (DBID=787970443)

RMAN> DELETE OBSOLETE;
2>
using target database control file instead of recovery catalog
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=59 device type=DISK
no obsolete backups found

Recovery Manager complete.
[oracle@terciocosta ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Fri May 22 15:16:31 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDB2 (DBID=787970443)

RMAN> @teste_script.rman

RMAN> DELETE OBSOLETE;
using target database control file instead of recovery catalog
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=49 device type=DISK
no obsolete backups found

Com o recovery catalog fica bem mais simples. Veja como seria criar o script e executar a partir de qualquer banco registrado no catalog, além de outros comandos úteis.

$ rman target / catalog rco@rcat

Recovery Manager: Release 19.0.0.0.0 - Production on Fri May 22 15:18:46 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDB2 (DBID=787970443)
recovery catalog database Password:
connected to recovery catalog database

RMAN> CREATE SCRIPT TESTE_SCRIPT_CATALOG
2> { DELETE OBSOLETE; }

created script TESTE_SCRIPT_CATALOG

RMAN> run
2> {
3> execute script TESTE_SCRIPT_CATALOG;
4> }

executing script: TESTE_SCRIPT_CATALOG

RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=59 device type=DISK
no obsolete backups found

RMAN> PRINT SCRIPT TESTE_SCRIPT_CATALOG
2> ;

printing stored script: TESTE_SCRIPT_CATALOG
{ DELETE OBSOLETE; }

RMAN> REPLACE SCRIPT TESTE_SCRIPT_CATALOG
2> {
3> DELETE NOPROMPT OBSOLETE;
4> }

replaced script TESTE_SCRIPT_CATALOG

RMAN> PRINT SCRIPT TESTE_SCRIPT_CATALOG
2> ;

printing stored script: TESTE_SCRIPT_CATALOG
{
DELETE NOPROMPT OBSOLETE;
}

RMAN> DELETE SCRIPT TESTE_SCRIPT_CATALOG;

deleted script: TESTE_SCRIPT_CATALOG

Caso você queria remover o recovery catalog é só executar o seguinte comando:

DROP CATALOG;

Caso você faça um upgrade do database, devemos também realizar o upgrade no catalog, é bem simples:

UPGRADE CATALOG;

E caso você tenha feito alguma ação sem estar conectado ao catalog e precisa sincronizar as informações depois, também é simples:

RESYNC CATALOG;

Como já foi dito acima, devemos também fazer o backup do database onde fica o recovery catalog. Mas, caso você perca ele sem backup, você deverá criar um recovery catalog do zero. Registrar manualmente todos os backups, sincronizar as informações e catalogar os backups existes.

Para verificar as informações relativos aos backups dos bancos registrados no catalog, você poderá consultar as views que começam com RC_ no owner do recovery catalog. Existe muitas úteis, por exemplo: RC_DATABASE, RC_DATABASE_INCARNATION, RC_BACKUP_FILES e etc. Para ver a lista completa é só dar uma olhada nos seus objetos no banco ou na documentação oficial da Oracle.

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação OCA 12c, Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: ,
Publicado em Administração, RMAN

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Sou um
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação OCA 12c, Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 180.662 Visualizações
%d blogueiros gostam disto: