backup e restauração banco de dados -...
TRANSCRIPT
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• 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] [']
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;