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 / 219302
Accepted
miracle173
miracle173
Asked: 2018-10-05 09:49:27 +0800 CST2018-10-05 09:49:27 +0800 CST 2018-10-05 09:49:27 +0800 CST

Como fazer um backup de um banco de dados Oracle que não atrapalhe o ciclo regular de backup?

  • 772

Meta

Eu quero mover um banco de dados do servidor A para o servidor B. Ambos os servidores têm a mesma tecnologia, então uma maneira é desligar o banco de dados de origem, copiar arquivos de dados, arquivo de controle, redo logs, arquivo de parâmetro de A para B e iniciar o banco de dados em B. Mas isso vai demorar muito, então vou usar um método que envolve os logs de arquivo. Por exemplo, posso usar o dataguard e construir um standby no SERVER B e alternar para este standby durante a migração. Mas por alguns motivos não quero usar um standby nem posso acessar o backup do banco de dados A para restaurá-lo em B.

Método

Antes do RMAN eu fazia isso da seguinte maneira:

  1. Defina o banco de dados de A no modo de backup e copie todos os arquivos de dados para um disco conectado ao servidor e desative o modo de backup.
  2. Mova este disco para B e anexe-o a ele.
  3. Agora, de tempos em tempos, os arquivos são transportados para B e aplicados
  4. Durante a migração os últimos arquivos são trazidos para B e aplicados e o banco de dados é copiado.

Claro que posso tentar isso com o RMAN também. E, em vez de copiar todos os arquivos, posso usar backups incrementais também.

Então eu faço o seguinte:

  1. Faça um backup de nível 0 em um disco conectado ao servidor A.
  2. Mova o disco para B e restaure o banco de dados no Servidor B.
  3. Agora, de tempos em tempos, os arquivos são transportados para B e aplicados
  4. Durante a migração os últimos arquivos são trazidos para B e aplicados e o banco de dados é copiado.

Eu até poderia aplicar backup incremental em vez de arquivos, exceto na última fase, mas aqui não estou interessado nisso.

Problema

Meu problema agora é que o backup do banco de dados em A é feito usando backups incrementais: 1. No domingo, é feito um backup de nível 0 2. nos 6 dias restantes, é feito um backup de nível 1

Desejo copiar meu backup de nível 0 para migração na quarta-feira. Mas isso atrapalha o backup regular. Suponha que eu faça esse backup de nível 0 na manhã de quarta-feira, então o backup de nível 1 noturno na quarta-feira se refere ao backup de nível 0 nesta manhã e não ao backup de nível 1 do dia anterior, como de costume. Mas no caso de uma restauração/recuperação quinta-feira temos um problema, porque o disco do backup de nível 0 de quarta-feira não está mais disponível. Acho que o banco de dados ainda pode ser recuperado porque o intervalo de tempo ausente pode ser recuperado com logs de arquivo. Mas eu quero uma solução que não atrapalhe o backup regular. Portanto, o backup de nível 1 na quarta-feira deve se referir ao backup de nível 1 na terça-feira.

Soluções

Como posso conseguir isso?

No momento eu vejo a seguinte maneira:

Eu uso a duplicata do banco de dados ativo para fazer uma cópia do banco de dados em A para o disco anexado a A. Esse banco de dados não deve ser aberto para que eu possa recuperá-lo com logs de arquivo posteriormente. Este disco é separado de A e movido para B. Aqui os arquivos de dados são registrados como cópias de arquivos de dados e restaurados para o servidor B.

Mas isso precisa de uma instância adicional em A para que eu possa duplicar essa instância.

Outra forma pode ser

 BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG... 

como descrito aqui

O manual diz:

Na BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...verdade, o comando nem sempre cria um backup incremental de nível 1. Se não houver backup de cópia de imagem de nível 0 de um arquivo de dados específico, a execução desse comando cria um backup de cópia de imagem do arquivo de dados no disco com a tag especificada em vez de criar o backup de nível 1.

Cada vez que um arquivo de dados é adicionado ao banco de dados, uma cópia de imagem do novo arquivo de dados é criada na próxima execução do script. O tempo depois disso, o primeiro incremental de nível 1 para esse arquivo de dados é criado e, em todas as execuções subsequentes, o novo arquivo de dados é processado como qualquer outro arquivo de dados.

As tags devem ser usadas para identificar as cópias de arquivos de dados de nível 0 incrementais criadas para uso nesta estratégia, para que não interfiram em outras estratégias de backup implementadas. Se você tiver várias estratégias de backup incremental em vigor, o RMAN não poderá criar backups incrementais de nível 1 sem ambiguidade, a menos que você marque os backups de nível 0.

Isso soa bem, mas eu realmente tenho que testar isso.

Minha pergunta

Qual método você propõe para obter um backup online de nível 0 que é ignorado pelo backup de nível 0 a seguir do ciclo de backup regular?

oracle migration
  • 2 2 respostas
  • 220 Views

2 respostas

  • Voted
  1. Michael Kutz
    2018-10-05T10:07:16+08:002018-10-05T10:07:16+08:00

    Eu usaria RMAN para DUPLICATE DATABASE TO OTHERDB. Sinta-se à vontade para usar um dos métodos relacionados que se adequa ao seu ambiente/requisitos.

    Referências:

    • https://oracle-base.com/articles/11g/duplicate-database-using-rman-11gr2
    • https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmdupdb.htm#BRADV010
    • 1
  2. Best Answer
    miracle173
    2018-10-05T17:12:30+08:002018-10-05T17:12:30+08:00

    Um FULL-Backup não interfere com o backup regular.

    A partir da descrição do BACKUPcomando na "Referência de Backup e Recuperação do Banco de Dados" da "Oracle Database Online Documentation 11g Release 2 (11.2)" para o operando de backup FULL:

    Cria um backup de todos os blocos de arquivos de dados incluídos no backup. FULLé o oposto de INCREMENTAL. O RMAN faz backups completos por padrão se nem FULLnem INCREMENTALfor especificado. Um backup completo não tem efeito nos backups incrementais subsequentes e não é considerado parte de nenhuma estratégia de backup incremental. Um backup de cópia de imagem completo pode ser atualizado incrementalmente, no entanto, aplicando backups incrementais com o RECOVERcomando.

    • 1

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