AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 129311
Accepted
user_0
user_0
Asked: 2016-02-16 08:06:45 +0800 CST2016-02-16 08:06:45 +0800 CST 2016-02-16 08:06:45 +0800 CST

Restaurar dados de um backup rman antigo - ORA-01152

  • 772

Estou com problemas para restaurar alguns dados de um backup antigo.

A máquina original foi perdida e minha missão é restaurar os dados. Esta não é uma máquina crítica, mas alguns dados ainda são úteis.

  • Oracle no servidor original: 11.2.0.2
  • Oracle no servidor de destino: 11.2.0.4

O servidor é redhat- 5.6 original. destino 6.x.

Na máquina nova, com o oracle instalado fiz:

export ORACLE_SID=oldsid
rman TARGET /

E no rman eu defino o sid como o antigo databsae:

SET DBID 3348161342;

Em seguida, restaurou controlfile e spfile do backup. Observação importante : esses arquivos são mais recentes que o backup.

RESTORE CONTROLFILE from '/mount/restorepoint/3348161342_41qtltn4_1_1_20160111.bck
restore spfile from '/mount/restorepoint/sp_OLDDB-3348161342_42qtltn6_1_1_20160111.bck';

Banco de dados em montagem com:

ALTER DATABASE MOUNT;

E especificou onde estão os arquivos de backup:

catalog start with '/mount/restorepoint/rmanfiles';

Porque no banco de dados original também há TDE.

  • Criou um diretório para colocar a carteira
  • Arquivos sqlnet.ora criados com indicações na localização da carteira

Sistema alterado com:

alter system set encryption wallet open identified by "thetdepassword";

E então novamente em rman:

alter database mount;
RESTORE DATABSE;

Até agora, tudo bem. Mas quando eu trago para o banco de dados OPEN:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

Tudo bem, meu mal. Então eu uso: alter database open RESETLOGS; e estou com o erro:

ORA-01152: file 4 was not restored from a sufficiently old backup
ORA-01110: data file 4: '/ltm/data/oracle/dati/olddb/users01.dbf'

o que estou perdendo?
No script de backup original, as opções devem ser:

BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE

Como posso ler novamente esses dados ?

Eu venho do mundo sqlserver e postgresql, então provavelmente sinto falta de alguma coisa ...

oracle rman
  • 3 3 respostas
  • 21912 Views

3 respostas

  • Voted
  1. Best Answer
    atokpas
    2016-02-16T09:20:15+08:002016-02-16T09:20:15+08:00

    Vamos ver as informações fornecidas pelo utilitário oerr.

    ORA-01152: o arquivo 1 não foi restaurado de um backup suficientemente antigo

    Causa: uma sessão de recuperação incompleta foi iniciada, mas um número insuficiente de logs foi aplicado para tornar o banco de dados consistente. Este arquivo ainda está no futuro do último log aplicado. A causa mais provável desse erro é esquecer de restaurar o arquivo de um backup antes de fazer uma recuperação incompleta.

    Ação: Aplique mais logs até que o banco de dados esteja consistente ou restaure o arquivo de banco de dados de um backup mais antigo e repita a recuperação

    De acordo com sua postagem, você não recuperou o banco de dados. Você pode tentar os seguintes comandos para recuperar seu banco de dados.

    SQL> recuperar banco de dados usando controlfile de backup até cancelar;
    SQL>alter banco de dados aberto resetlog;
    

    Como você é novo no Oracle, pode achar o link a seguir útil para restaurar o backup antigo no novo host.
    Restaurando um banco de dados em um novo host

    • 3
  2. miracle173
    2016-02-17T10:49:43+08:002016-02-17T10:49:43+08:00

    Você tem que recuperar o banco de dados. Presumo que você restaurou um backup online que você (ou um backup offline inconsistente, mas vamos ignorar essa possibilidade). O próximo passo é recuperar o banco de dados. Portanto, em sua sessão rman , execute um

    recover database;
    

    ou um

    recover database until ....;
    

    onde '....' é um ponto no tempo (ou SCN ou algo semelhante). Se você usar um ponto no tempo, ele deve ser após o horário de término do backup do arquivo de dados. Caso contrário, os arquivos de dados permanecerão inconsistentes.

    O processo de restauração aplicará backups incrementais de nível 1 (se existirem) e arquivará logs em seu banco de dados.

    Depois de restaurar o banco de dados, talvez você tenha os próximos problemas porque restaurou um banco de dados 11.2.0.2 para um ambiente 11.2.0.4. Portanto, você deve combinar sua restauração com uma atualização para 11.2.0.4.

    As instruções detalhadas para uma atualização para 11.2.0.4 podem ser encontradas no pacote de software 11.2.0.4. Aqui está um pequeno artigo blob que pesquisei no Google ( rkorclappsdbastuff ). A partir disso, vemos que há algumas etapas de pré-atualização (etapa 2 a 5) que você deve executar no banco de dados 11.2.0.2, portanto, você deve ignorá-las: você não pode executar o script de pré-atualização utlu112i.sql e implementar suas recomendações, também não pode calcule as estatísticas do dicionário antes da atualização e você não pode executar utlrp.sql para compilar os objetos inválidos. Você tem que adaptar o spfile restaurado para 11.2.0.4: criar um pfile , alterar/adicionar/remover parâmetros, se necessário, recriar um spfile novamente a partir do spfile. Você não precisa de banco de dados para executar o create pfilee create spfile.

    Agora você pode abrir o banco de dados, mas deve abri-lo no modo de atualização porque é um banco de dados 11.2.0.2 que deve ser atualizado para 11.2.0.4 e você deve abri-lo com logs de redefinição, porque é um banco de dados recuperado sem arquivos de log. Portanto, o comando correto (consulte o Oracle SQL Language Reference ) é

    REM step 12 of rkorclappsdbastuff
    startup mount
    alter database open resetlogs upgrade ;
    @catupgrd.sql
    

    Agora você pode prosseguir com as etapas restantes.

    • 2
  3. Gandolf989
    2016-02-17T06:28:28+08:002016-02-17T06:28:28+08:00

    Se você tiver mais de um backup de seu arquivo de controle, tente usar o backup mais antigo. Essencialmente, a mensagem está informando que o arquivo de controle é mais recente que o restante do backup. por exemplo, se você fizer backup do arquivo de controle, faça backup do banco de dados e faça backup do arquivo de controle. Fazer uma restauração usando o segundo backup do arquivo de controle resultará no erro que você está recebendo. Fazer uma restauração usando o backup mais antigo ou o primeiro backup do arquivo de controle deve funcionar.

    • 0

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve