backup e restauração banco de dados -...

30
Evandro Deliberal [email protected] https://www.linkedin.com/in/evandrodeliberal Backup e Restauração Banco de Dados

Upload: dinhdiep

Post on 03-Dec-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Evandro [email protected]://www.linkedin.com/in/evandrodeliberal

Backup e RestauraçãoBanco de Dados

Backup e Recuperação de dados no ambiente Oracle

Backup e Recuperação de Dados• Backup

– é uma cópia de objetos que existe para garantir a restauração dos mesmos em caso falha

– Tipos:• Lógicos: Que contém dados e/ou definições de objetos (export/import)

• Físicos: que contém arquivos físicos do banco de dados datafiles, archive logs ou controlfiles

• Podem ser feitos pelo banco (RMAN ou manualmente com o BEGIN\END BACKUP) ou diretamente pelo usuário administrador via servidor.

Backup e Recuperação de Dados• Backups

– Consistentes

• Feitas sem que a base esteja ativa ou esteja em modo MOUNT

– Inconsistentes (hot backup ou On Line)

• Com o banco em execução

• Leva a imagem do momento de execução

• Tem que estar em modo ARCHIVELOG

Backup e Recuperação de Dados• Recover (Recuperação)

– Instance recovery• Realizado pelo próprio banco após uma queda anormal ou um shutdown abort• aplica no banco o que está em redo (commitados) e da rollback no que estiver

em undo (não commitados).

– Media Recovery• Recuperação de algum arquivo que está danificado• Uma vez recuperado o arquivo o sistema irá analisar se há a necessidade de

Recovery

• Não é feita pelo RMAN (Recovery Manager)

– Recover completo, Incompleto e Point-in-time• é o processo de trazer a base de dados para o momento mais atual

após a falha• Temos como uma opção ao Point in Time recovery

Backup e Recuperação de Dados• Importante

– A para a tarefa de recover arquivos de redo log buffer são importantes, logo mantenha-os sempre em gestão

– A recuperação sempre existirá utilizando ou não o Backup, pois caso seja necessário restaurar o backup, após a restauração o processo de recover entre em funcionamento

Backup e Recuperação de Dados• Instância Oracle

– É a estrutura de memória e os processos Oracle que se encontram na memória principal, obviamente uma instância existe quando a maquina está ligada, pois os dados da memória principal são voláteis.

– Composta por duas áreas de memória o SGA e o PGA.• Banco de Dados

– O Oracle Database é composto por três tipos de arquivos que encontra-se no sistema operacional• ControlFile• DataFile• LogRedo

Backup e Recuperação de Dados• ControlFile: O ControlFile é um arquivo pequeno, mas muito

importante, pois nele contem todas as informações necessária para montar uma instancia

• DataFile: é onde são armazenados as informações do banco de dados. Tanto os dados dos usuários como os dados interno do Oracle - dicionário de dados - são armazenados nestes arquivos

• RedoLog: é um conjunto de arquivos que guardas as últimas operações de um banco de dados

Backup e Recuperação de Dados• Tipos de backup no Oracle

– On-line

– Off-line

– Control File

– Fisico

– RMAN

Backup e Recuperação de Dados• Verificação de Recuperação ocorre em 3 etapas:

– Fase NoMount – É a primeira fase, onde é lido o arquivo de parâmetros init.ora para determinar o tamanho do SGA, criar e inicializar os processos de background. Também é lido o endereço do arquivo de controle (control files), que será aberto na próxima fase.

– Fase Mount – Nesta fase é montado o banco de dados, onde o arquivo de controle (control files) é aberto e os endereços dos datafiles e redolog files são lidos.

– Fase Open – Durante esta fase, caso um dos arquivos referenciados no arquivo de controle (SCN) não seja encontrado, ou esteja fora de sincronismo, o banco de dados não é aberto.

Backup e Recuperação de Dados• Recuperação é composta por duas fases:

– Roll Forward• Aplica sequencialmente as alterações de blocos (redo records) contidas nos

registros do redo log• Lê os redo records existentes no arquivo de redo log e obtém os blocos

originais correspondentes às modificações nos datafiles, movendo-os para o database buffer cache

• A tabela interna undo$ contém informações sobre as transações pendentes

– Roll Backward• Após a aplicação de todos os redo records correspondentes, começa a

segunda parte do processo de recuperação, que é o rollback das transações não confirmadas

• chamada de recuperação da transação

Backup e Recuperação de Dados• Opções de Media Recovery

– Database Recovery = mais abrangente, pois recupera todos os redo records contidos nos redo logs arquivados

– Tablespace Recovery = um método de recuperação online, medida que só funciona com o banco de dados aberto

– Data file Recovery = Possui o maior nível de granularidade

Backup e Recuperação de Dados• Automatic – A recuperação será executada sem

que o DBA precise informar o nome e o caminho dos arquivos de redo a serem aplicados.

• From Irá buscar os redos arquivados na localização específica.

• Database_Name – Nome do banco de dados se o db_name não for especificado no arquivo de parâmetros.

• Tablespace_name – Nome da tablespace que será recuperada.

• Datafile_name – Nome do datafile que será recuperado.

• O default do comando é recovery database.

• Sintaxe

recover [automatic] [from ]

[database database_name]

[tablespace ]

[until cancel]

[until time ]

[until change ]

[using backup controlfile];

Backup e Recuperação de Dados• Diferença entre Completo e Incompleto

– A recuperação de um banco de dados obtido de uma falha de armazenamento sem nenhuma perda de dados é identificado de “Complete Recovery”, caso uma parte dos dados tenha sido perdido temos um caso de “Incomplete Recovery”.

• Quando possuímos todos os arquivos de redo logs necessários, os datafiles de backup e o arquivo controle corrente, devemos fazer uma recuperação completa

• A incompleta só realizar quando:– Tivermos itens faltantes– Recuperar até um determinado ponto no tempo

RMAN – Recovery Manager

RMAN• Para acessar, basta entrar no prompt de comando e digitar

% rman

RMAN>

• Para conectar a base dentro do RMAN% rman

RMAN> CONNECT TARGET SYS@prod

target database Password: password

connected to target database: PROD (DBID=39525561)

• Verificar a configuração do RMANRMAN> SHOW ALL;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

RMAN• Sintax de comando no RMAN

RMAN

[ TARGET connectStringSpec

| CATALOG connectStringSpec

| LOG ['] filename ['] [ APPEND ]

.

.

. ]...

connectStringSpec::=

['] [userid] [/ [password]] [@net_service_name] [']

RMAN [ TARGET connectStringSpec | CATALOG connectStringSpec | LOG ['] filename ['] [ APPEND ] . . . ]... connectStringSpec::= ['] [userid] [/ [password]] [@net_service_name] [']

Estratégias de Recuperação

Recuperação Completa• Para realizar uma recuperação completa do banco de

dados, ele tem que estar rodando em modo ARCHIVELOG.

• Deve-se estar de posse também dos datafiles a serem recuperados, controlfiles e redo logs arquivados

Recuperação Completa• Identificar subsidio que justifique a recuperação

– recorrer ao alert log para buscar o erro na inicialização

– posteriormente consultar os arquivos de trace gerados

– O método recomendado e seguro é efetuar um restore e recover completo do banco de dados através do RMAN, o qual utilizará o último backup para restaurar os datafiles e os archives para restaurar os dados após o backup.

Recuperação CompletaSQL> select status from v$instance;

STATUS

---------------------------

MOUNTED

SQL>

Recuperação Completa* Restaurando o banco de dados completo.

RMAN> restore database;

* Recuperando os dados.

RMAN> recover database;

* Abrindo o banco de dados.

RMAN> sql 'alter database open resetlogs';

instrucao sql: alter database open resetlogs

RMAN>

Recuperação Completa* Verificando o resultado do processo.

SQL> select status from v$instance;

STATUS

------------------------

OPEN

Recuperação Incompleta• Antes de fazer uma recuperação incompleta do banco de dados

Oracle, temos que deixar prontos todos os arquivos já copiados, para o momento certo de recuperação, garantindo que todos os arquivos contenham modificações (SCNs) anteriores ao momento em que queremos para a recuperação.

• Use pontos de restauração para recuperar um banco de dados para um SCN ou um momento específico no passado.

• Use CREATE RESTORE POINT para criar um ponto de restauração.• Você deve abrir o banco de dados com RESETLOGS se você fizer

uma recuperação incompleta.

Recuperação Incompleta• é importante que o banco de dados esteja com o recurso flashback, pois o

“Recover Incompleto” inspecionará os arquivos de dados restaurados, e neste caso seria necessário restaurar todos os datafiles o que demandaria uma janela de tempo de recuperação maior. Por isto, ative o flashback database do banco de dados conforme os passos abaixo:

SQL> alter system set db_recovery_file_dest=' C:\bck_oracle\flash_recovery_area;SQL> alter system set db_recovery_file_dest_size=8G;SQL> alter system set db_flashback_retention_target=240;SQL> shutdown immediate;SQL> startup mount;SQL> alter database flashback on;SQL> alter database open;

Recuperação Incompleta• Ativado o recurso flashback, inicie o banco no estado MOUNT

• Execute o comando de flashback para voltar o banco de dados como estava as 8h50min.SQL> flashback database to timestamp

to_timestamp('21112012 08:50:00','dd/mm/yyyy

hh24:mi:ss');

Flashback concluído.

• Depois abra o banco como comente leitura.SQL> alter database open read only;

Recuperação Incompleta• Verifique se os dados foram restaurados, caso não

apareça, volte a executar o comando flashback voltando ainda mais o tempo.SQL> select count(*) from

schema_importante.aca_aluno;

COUNT(*)

------------------------------

705

Recuperação Incompleta• Após confirmado que o Schema foi restaurado no banco de dados,

realize a exportação do schema.– C:\>exp system/senha file=c:\bck_oracle\schema_importante.dmp owner=schema_importante

• Depois de exportado o schema, faça o recover completo do banco de dados.C:\>sqlplus /nolog

SQL> connect sys/senha as sysdba;

SQL> shutdown immediate;

SQL> startup mount;

SQL> recover database;

SQL> alter database open;

Duvidas?

Obrigado

Evandro Deliberal

[email protected]