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 / 196352
Accepted
Jason Krs
Jason Krs
Asked: 2018-01-27 09:13:55 +0800 CST2018-01-27 09:13:55 +0800 CST 2018-01-27 09:13:55 +0800 CST

Oracle DBAI Theory: não é REALMENTE possível ter o banco de dados Oracle corrompido após a falha da instância?

  • 772

Estou estudando um pouco de DBA e me deparei com falha/recuperação de instância.

Digamos que o usuário A faça DML e o usuário B também faça DML.

Neste ponto, acredito que seja seguro assumir que o cache de buffer de banco de dados contém blocos de tabela alterados e segmentos de desfazer, e também que o buffer de log contém informações de redo para o novo valor de blocos de tabela e o novo valor de segmentos de desfazer.

  • Caso 1: Nenhum usuário emite uma COMMITe nenhuma gravação no disco por DBWn e falha de instância. Resultado: DB não corrompido. É como se o DML deles nunca tivesse ocorrido.

  • Caso 2: Somente o usuário A emite um arquivo COMMIT. As alterações não confirmadas do usuário B são gravadas no disco e a instância falha. O LGWR terá escrito dados suficientes no redo log , especialmente os segmentos de undo do usuário B , para que a fase de rollback da recuperação torne o banco de dados consistente novamente

  • Caso 3: Nenhum usuário emite a, COMMIT mas seus blocos de tabela alterados são antigos o suficiente para fazer o DBWn gravá-los em disco. Então BOOM! A instância falha. Como será SMONrealizado o rollback para limpar blocos sujos de arquivos de dados aqui? Especialmente porque não há valores de segmento de desfazer para eles no log de refazer aqui.

oracle recovery
  • 1 1 respostas
  • 134 Views

1 respostas

  • Voted
  1. Best Answer
    miracle173
    2018-01-27T22:16:17+08:002018-01-27T22:16:17+08:00

    Um bloco sujo só pode ser gravado em disco se todas as alterações até o momento da modificação desse bloco já tiverem sido gravadas nos redo logs . O Guia de Conceitos de Banco de Dados Oracle 12g2 diz

    Antes que o DBW possa gravar um buffer sujo, o banco de dados deve gravar no disco os registros de redo associados às alterações no buffer (o protocolo write-ahead ). Se o DBW descobrir que alguns registros de redo não foram gravados, ele sinaliza ao LGWR para gravar os registros no disco e espera que o LGWR seja concluído antes de gravar os buffers de dados no disco.

    Portanto, após a recuperação de um banco de dados, ele contém todas as modificações até um determinado momento e nenhuma modificação que foi feita após esse período. Se uma transação foi confirmada, os redo logs contêm a modificação de sua transação e, portanto, suas modificações foram gravadas nos arquivos de dados durante a recuperação. As transações que não foram confirmadas ou apenas modificaram as estruturas de memória (buffer cache) e todas as modificações foram perdidas por causa do travamento, ou fizeram algumas modificações no arquivo, mas as informações de desfazer também foram gravadas nos arquivos que contêm o desfazer segmentos e essas informações de desfazer serão usadas para desfazer as alterações desta transação.

    caso 3: Se um bloco sujo de um arquivo de dados for escrito de volta no disco, todas as alterações feitas antes da modificação desse bloco já estarão nos redo logs e, portanto, as informações de desfazer já estarão nos redo logs

    caso 1: Se nenhum usuário emitir um commit, isso não significa que as alterações foram gravadas no arquivo de dados ou no redo log. Mas se algo foi gravado no disco, pode ser desfeito conforme descrito acima.

    caso 2: alterações não confirmadas não devem ser gravadas em disco. É garantido apenas que as alterações confirmadas sejam gravadas no disco.

    • 2

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