-
1. O significado da recuperação
Quando usamos um banco de dados, sempre esperamos que o conteúdo do banco de dados seja confiável e correto. No entanto, falhas no sistema de computador (falhas de hardware, falhas de rede, falhas de processo e falhas de sistema) afetam a operação do sistema de banco de dados e a precisão do sistema. os dados do banco de dados sexualmente, até mesmo destruir o banco de dados, fazendo com que todos ou parte dos dados do banco de dados sejam perdidos. Portanto, quando ocorrer a falha acima, espera-se que um banco de dados completo possa ser restabelecido. Esse processo é chamado de recuperação de banco de dados. O subsistema de recuperação é uma parte importante do sistema de gerenciamento de banco de dados. O processamento de recuperação varia dependendo da estrutura afetada pelo tipo de falha ocorrida.
2. Método de recuperação
Método IMPORTAR:
Use IMPORT para IMPORTar o último arquivo de dados exportado para o novo banco de dados. Este método pode restaurar qualquer objeto de banco de dados ao estado em que foi exportado, e as alterações subsequentes serão irreversíveis. O comando IMPORT pode ser executado interativamente. Para o significado específico de cada parâmetro, consulte a explicação detalhada dos parâmetros ORACLE EXP/IMP. Este método é adequado para ambientes que não utilizam o modo de arquivamento.
Métodos de recuperação seguros:
Se o banco de dados estiver sendo executado no modo de arquivo, quando o banco de dados for danificado, o banco de dados poderá ser restaurado para o estado do ponto de interrupção por meio de backup a frio (backup a quente) e backup de arquivo.
Recuperação de arquivos de controle de banco de dados (assumindo que todos os arquivos de controle sejam destruídos):
O banco de dados é baseado no sistema de arquivos: basta utilizar o tar, cp e outros comandos do sistema operacional.
O banco de dados é baseado em dispositivos brutos: dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 seek=12
Recuperação de arquivos de dados de banco de dados
Recuperação de espaços de tabelas de dados e índices e espaços de tabelas do sistema:
Copie os arquivos de banco de dados relevantes e todos os arquivos de log lógicos gerados desde o backup do arquivo de dados e execute o seguinte comando:
svrmgrl > montagem de inicialização
svrmgrl > alterar recuperação automática do banco de dados
Se o arquivo de controle estiver danificado, então: svrmgrl > alterar recuperação do banco de dados usando backup controfile Insira o nome do arquivo de log e o nome do arquivo redolog conforme solicitado.
svrmgrl > alterar resetlogs abertos do banco de dados;
Recuperação de arquivos temporários de banco de dados e espaços de tabela de reversão: basta colocá-lo offline e reconstruí-lo.
Nota: Se o banco de dados não estiver em execução no modo de arquivamento, a recuperação só poderá restaurar o estado do último backup. Para obter informações sobre configurações do modo de arquivamento e tecnologias relacionadas a backup, consulte Tecnologia de backup de banco de dados ORACLE.
3. Solução de recuperação de espaço de tabela ORACLE
(1) Fenômeno de erro de espaço de tabela doméstico:
ORA-01157, ORA-01110 ou erro no nível do sistema operacional ocorre ao iniciar o banco de dados
Erros como ORA-07360, ao desligar o banco de dados (usando desligamento normal ou desligamento imediato) resultarão em erros ORA-01116, ORA-01110 e erro de nível de sistema operacional ORA-07368
resolver:
Existem duas soluções abaixo:
Solução 1: O espaço de tabela do usuário pode ser facilmente reconstruído, ou seja, os objetos exportados recentemente estão disponíveis ou os objetos no espaço de tabela podem ser facilmente reconstruídos, etc. Nesse caso, a maneira mais fácil é ficar offline e excluir os arquivos de dados, descartar o espaço de tabela e reconstruir o espaço de tabela e todos os objetos.
svrmgrl> montagem de inicialização
svrmgrl> alterar o nome do arquivo do arquivo de dados do banco de dados offline;
svrmgrl> alterar banco de dados aberto;
svrmgrl> eliminar o espaço de tabela tablespace_name incluindo conteúdo;
Reconstrua o tablespace e todos os objetos.
Solução 2: O espaço de tabela do usuário não pode ser reconstruído facilmente. Na maioria dos casos, a reconstrução do espaço de tabela é impossível e muito trabalhosa. O método é reverter o backup e executar a recuperação de mídia. os dados perdidos podem ser recuperados no redo log online.
As etapas são as seguintes:
1)Restaure o arquivo de dados perdido de um backup
2)svrmgrl> montagem de inicialização
3)svrmgrl> selecione v1.group#,member,sequence#,first_change# de v$log v1,v$logfile v2 onde v1.group#=v2.group#;
4) Se o banco de dados estiver rodando no modo NOARCHIVELOG: svrmgrl> select file#,change# from v$recover_file;
Se CHANGE# for maior que o mínimo FIRST_CHANGE# então o arquivo de dados poderá ser restaurado.
Se CHANGE# for menor que o mínimo FIRST_CHANGE#, o arquivo de dados não será recuperável. Restaure o backup completo mais recente ou use a opção um.
5)svrmgrl> recuperar nome do arquivo do arquivo de dados;
6) Confirme se a recuperação foi bem-sucedida
7)svrmgrl> alterar resetlogs abertos do banco de dados;
Não há necessidade de executar recuperação de mídia para espaços de tabela somente leitura, apenas restaure o backup. As únicas exceções são:
O espaço de tabelas foi alterado para o modo leitura-gravação após o último backup. O espaço de tabelas foi alterado para o modo somente leitura após o último backup.
(2) Espaço de tabela temporário O espaço de tabela temporário não contém dados reais. O método de recuperação é excluir o espaço de tabela temporário e reconstruí-lo.
(3) Se o backup do espaço de tabelas do sistema não estiver disponível, o único método poderá ser reconstruir o banco de dados.
(4) Existem duas situações para reverter o espaço da tabela:
1. O banco de dados foi completamente encerrado (use o comando shutdown imediato ou shutdown)
1) Confirme se o banco de dados está completamente fechado
2) Modifique o arquivo init.ora e comente "rollback-segment"
3) svrmgrl> montagem restrita de inicialização
4) svrmgrl> alterar o nome do arquivo do arquivo de dados do banco de dados offline;
5) svrmgrl> alterar banco de dados aberto;
Com base nos resultados que aparecem: “instrução processada” vá para (7);
6) svrmgrl> desligamento imediato
Modifique o arquivo init.ora e adicione a seguinte linha: _corrupted_rollback_segments = (<roll1>,...<rolln>)
svrmgrl> restrição de inicialização
7) svrmgrl> drop tablespace tablespace_name incluindo conteúdo;
8) Reconstruir espaço de tabela e segmento de reversão
9) svrmgrl> alter system desabilita sessão restrita;
10) Modifique o arquivo init.ora
2. O banco de dados não está completamente fechado (o banco de dados trava ou o comando shutdown abort é usado para fechar o banco de dados)
1) Restaurar backup
2) svrmgrl> montagem de inicialização
3) svrmgrl> selecione arquivo#,nome,status de v$datafile;
svrmgrl> alterar o nome do arquivo do arquivo de dados do banco de dados online;
4) svrmgrl> selecione v1.group#,member,sequence#,first_change# de v$log v1,v$logfile v2 onde v1.group#=v2.group#;
5) svrmgrl> selecione arquivo#, altere# de v$recover_file #Veja a solução 2-4;
6) svrmgrl> recuperar nome do arquivo do arquivo de dados;
7) svrmgrl> alterar banco de dados aberto;
3. O banco de dados está aberto
1) Exclua o segmento de rollback e o espaço de tabela
2) Reconstruir espaço de tabela e segmento de reversão (5), controlar recuperação de arquivos
1. Todos os arquivos de controle são destruídos. Copie os arquivos de controle de backup para o diretório original Para RAW DEVICE (dispositivo nu), então: dd if='con.bak' of='/dev/rdrd/drd1' seek=128.
2. Nem todos os arquivos de controle são destruídos. Use outros arquivos de controle para iniciar o banco de dados (6), salve os blocos de dados e os dados neles contidos. Ocorre o erro ORA-01578 ao executar a operação ORACLE: O erro ORA-1578 ocorre. considera que os blocos de dados podem estar corrompidos e podem ocorrer devido aos seguintes motivos:
Danos no hardware ou firmware de E/S Falha de E/S ou cache do sistema operacional Erro de memória ou troca de página Parte do arquivo de dados foi sobrescrita Tentativa de acessar um disco de bloco não formatado Reparar Outras causas Etapas da solução:
Verifique os arquivos de log e de rastreio para ver se há outros erros ou erros de posicionamento:
sql> selecione * de v$datafile onde arquivo#=<F>;
sql> selecione proprietário,segment_name,segment_type de dba_extents onde file_id=<F> e <B> entre block_id e block_id+blocks-1;
Com base no segment_type retornado:
O tipo de segmento é temporário ou cache ou não possui valor de retorno Verifique se a instrução SQL está correta.
Se o tipo de segmento for segmento de reversão, o bloco de dados precisará ser restaurado.
O tipo de segmento é índice, verifique a tabela onde está localizado. Basta reconstruir o índice.
sql> selecione proprietário, nome_tabela de dba_tables onde cluster_name = nome_do_segmento
O erro 1578 ainda ocorre e o banco de dados precisa ser restaurado.
O tipo de segmento é uma tabela e salva os dados na tabela.
Analise se uma entidade tem corrupção permanente de dados
sql> analisar tabela table.name validar estrutura em cascata;
sql> analisar tabela clustername validar estrutura em cascata;
Banco de dados de recuperação de erros de hardware em execução no modo ARCHIVE
Arquivo de dados correspondente OFFLINE copiar arquivo de dados de backup
renomeie o arquivo de dados para um novo local
recuperar o arquivo de dados usando log de arquivo
O banco de dados do arquivo de dados on-line está sendo executado no modo não-ARCHIVE
OFFLINEO arquivo de dados correspondente copia o arquivo de dados de backup, renomeia o arquivo de dados e o coloca on-line
Salve os dados na tabela, por exemplo: sql>select * from bigemp;
ERRO: ORA-01578: bloco ORACLE DATA corrompido (arquivo#8, bloco#8147) ORA-00110: arquivo de dados 8: '/oracle/usr714.dbf'… … id do arquivo corrompido: 8=8(hex) id do bloco corrompido : 8147 = 1fd3 (hex) primeiro rowid no bloco corrompido: 0000.1fd3.0000.0008 último rowid no bloco corrompido: 0000.1fd2.7fff.0008 primeiro rowid após este bloco: 0000.1fd4.0000.0008
sql > crie tabela temporária como select * from bigemp onde 1=2;
sql > inserir em temp select * from bigemp /*+rowid(bigemp) */ where rowid >='0000.1fd4.0000.0008';
sql > inserir em temp select * from bigemp where rowid <='0000.1fd2.7fff.0008';
Nas versões anteriores ao ORACLE 7.1, quando a varredura de intervalo rowid não existe, o mesmo propósito acima pode ser alcançado através da indexação.
4. Pós-escrito
Pode-se dizer que a tecnologia de backup e recuperação da ORACLE é extensa e profunda. Conheço apenas uma pequena parte dela e não é muito completa. Espero que esses artigos possam ser úteis para todos. e recuperação. Diga-me o problema, irei organizá-lo e publicá-lo aqui para referência de todos os amigos DBA e administradores de dados que tenham interesse em fazê-lo. Talvez seu pequeno esforço salve uma empresa!
Ao mesmo tempo, gostaria de lembrar a todos os meus amigos que o backup é muito, muito, muito, muito, muito, muito, muito, muito, muito importante. . . É importante ressaltar que, se possível, você deve usar o modo ARQUIVO, caso contrário, algo pode dar errado e você nem conseguirá chorar.