📖
Definição
Conceitos de Recovery
RESTORE
Copia arquivos de backup de volta para seus locais originais ou novos. Não deixa o banco consistente.
RECOVER
Aplica redo logs (online e archived) para tornar os datafiles consistentes com um ponto no tempo.
Complete Recovery
Recupera banco até última transação committed disponível. Sem perda de dados.
Incomplete Recovery (PITR)
Recupera até ponto específico no passado. Requer RESETLOGS após recovery. Perde dados após o ponto escolhido.
Flashback Technologies
| Tecnologia | Uso | Requisito |
|---|---|---|
| Flashback Query | Consultar dados em ponto anterior | UNDO retention |
| Flashback Table | Reverter tabela inteira | Row movement ON |
| Flashback Drop | Recuperar tabela DROPpada | Recycle Bin |
| Flashback Database | Reverter banco inteiro | FRA + Flashback ON |
🛠️
Aplicação Prática
Complete Recovery
-- Perda de datafile (mas controlfile e redo logs intactos)
-- 1. Identificar datafiles perdidos
SELECT FILE#, NAME, STATUS FROM V$DATAFILE WHERE STATUS = 'OFFLINE';
-- 2. Banco em MOUNT (se necessário offline do datafile)
ALTER DATABASE DATAFILE 4 OFFLINE;
-- 3. Restore e Recover
RMAN TARGET /
RUN {
RESTORE DATAFILE 4;
RECOVER DATAFILE 4;
}
-- 4. Trazer datafile online
ALTER DATABASE DATAFILE 4 ONLINE;
-- Recovery de banco inteiro
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
Point-in-Time Recovery (PITR)
-- Cenário: DROP TABLE acidental às 14:30, queremos voltar para 14:25
-- IMPORTANTE: PITR perde todas transações após o ponto escolhido!
-- 1. Shutdown e mount
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
-- 2. Restore e recover até ponto específico
RMAN TARGET /
RUN {
SET UNTIL TIME "TO_DATE('17/12/2025 14:25:00', 'DD/MM/YYYY HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
-- 3. Abrir com RESETLOGS (cria nova incarnation)
ALTER DATABASE OPEN RESETLOGS;
-- Alternativas para SET UNTIL:
-- SET UNTIL SCN 2547893;
-- SET UNTIL SEQUENCE 1234 THREAD 1;
-- SET UNTIL RESTORE POINT before_mistake;
Flashback Database
-- Habilitar Flashback Database
ALTER DATABASE FLASHBACK ON;
-- Criar guaranteed restore point (não expira)
CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;
-- Flashback database para restore point
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO RESTORE POINT before_upgrade;
ALTER DATABASE OPEN RESETLOGS;
-- Flashback para timestamp
FLASHBACK DATABASE TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '2' HOUR);
-- Verificar janela de flashback disponível
SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME
FROM V$FLASHBACK_DATABASE_LOG;
Flashback Table
-- Habilitar row movement (necessário)
ALTER TABLE employees ENABLE ROW MOVEMENT;
-- Flashback table para 1 hora atrás
FLASHBACK TABLE employees TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' HOUR);
-- Flashback múltiplas tabelas
FLASHBACK TABLE employees, departments TO TIMESTAMP
TO_TIMESTAMP('17/12/2025 10:00:00', 'DD/MM/YYYY HH24:MI:SS');
-- Recuperar tabela DROPpada (Flashback Drop)
SHOW RECYCLEBIN;
FLASHBACK TABLE employees TO BEFORE DROP;
-- Purgar recyclebin
PURGE RECYCLEBIN;
PURGE TABLE employees;
Block Media Recovery
-- Recovery de blocos corrompidos específicos (mais rápido que datafile inteiro)
-- Identificar blocos corrompidos
SELECT FILE#, BLOCK#, CORRUPTION_TYPE FROM V$DATABASE_BLOCK_CORRUPTION;
-- Recover blocos específicos
RMAN TARGET /
BLOCKRECOVER DATAFILE 5 BLOCK 234, 456, 789;
-- Recover com restore point
BLOCKRECOVER DATAFILE 5 BLOCK 234
FROM BACKUPSET
RESTORE UNTIL RESTORE POINT before_issue;
✅
Resultado Esperado
✓
Complete Recovery
Restaurar banco até última transação
✓
PITR
Point-in-time recovery preciso
✓
Flashback
Recovery rápido sem restore
✓
Block Recovery
Reparar blocos corrompidos
✓
Troubleshooting
Diagnosticar falhas de recovery
✓
Teste Regular
Validar procedimentos de recovery