Sunday, December 24, 2017

Multitenant: Flashback CDB

Introdução


O processo de Flashback consiste em guardar uma copia de cada bloco dos datafiles antes de qualquer alteração nele feito em arquivo de log chamados flashback log, este são armazedos na fast recover area, e são retidos de acordo o espaoços disponivel e/ou o tempo de retenção determinado,  assim quando necessário é possivel desfazer qualquer alteração até o log disponivel.

O processo de "rewid" é muito parecido com o Point-in-Recovery, o banco é trazido em um estado consistente no passado, a diferença é que não é necessário voltar peças de backups e aplicar  archives excessivos, somente é aplicado os flashback log necessários e o grupo de archive/redo para deixar o ambiente consistente naquele ponto.

Pre-Requisitos

Para habilitar o Flashback log alguns pre-requisitos devem ser seguidos

  • Banco de dados deve estar em modo de archivelog.
  • Fast Recover Area deve estar habilitado.


Habilitando o Flashback

O Flash deve ser habilitado a nivel de CDB e pode ser feito on line conforme abaixo, é possivel habilitar tambem o flashback para uma tablesppace especifica ou remover o log de flashback para uma tablespace

ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440;

ALTER DATABASE FLASHBACK ON;

Criando Restore Point

É possivel criar restore points, que são alias para um SCN, existem dois tipos de restore point, o "normal" e o guarantee, a diferença é que se a flash recover area estiver precisando de espaço os flash back com no guarantee são removidos para garantir a disponibilidade da base de dados.

O Restore point pode existir para o CDB ou para um especifico PDB, depende do escopo o qual o restore point foi criado, (12.2);

Para criar um restore point:

CREATE RESTORE POINT before_upgrade;

CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;

SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
        GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE, con_id
        FROM V$RESTORE_POINT;

Flashback CDB (12.1)

Na versão 12.1 somente é possivel fazer flashback a nivel de CDB, ou seja, todos os PDBs voltarão no ponto no tempo, somente a partir do 12.2 é possivel fazer flashback somente do PDB.

Há uma limitação em que não se pode fazer um flashback para um ponto anterior a qualquer PDB que tenha feito Point-in-time recover.

Para realizar então com o Flashback do CDB seguir com os passos abaixo:

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO RESTORE POINT BEFORE_UPGRADE;
ALTER DATABASE OPEN RESETLOGS;
ALTER PLUGGABLE DATABASE ALL OPEN;

Referencia

https://docs.oracle.com/database/121/BRADV/flashdb.htm#BRADV582
https://docs.oracle.com/database/121/BRADV/rcmflash.htm#BRADV80055
https://oracle-base.com/articles/12c/multitenant-flashback-of-container-database-12cr1

1 comment:

Anonymous said...

Muito bom Diogo Nomura. Me ajudou muito.

Abrcs: Anderson Santos Pedreira (pedra)