O objetivo ao desligar para manutenção (ou backup a frio) é que o banco de dados seja mantido em um estado consistente, sem necessidade de reversão / recuperação na inicialização.
Existem 3 shutdown
comandos SQL * Plus que alcançam isso em teoria, os quais impedem imediatamente que novas sessões se conectem à instância:
shutdown normal
ou apenas shutdown
: espera que todas as sessões sejam desconectadas. Esse modo raramente é usado na prática porque depende de clientes bem comportados que não deixam as conexões abertas. Esse costumava ser o único shutdown
modo que não cancelava transações em execução.
shutdown transactional
: desconecta as sessões após a conclusão das transações atualmente em execução, impedindo o início de novas transações.
shutdown immediate
: desconecta todas as sessões imediatamente e reverte as transações interrompidas antes de desligar. Observe que as desconexões são imediatas, mas o encerramento pode não ocorrer, pois as transações interrompidas podem levar um tempo para serem revertidas.
O quarto modo de shutdown
é shutdown abort
. É como puxar o cabo de alimentação - a instância pára agora sem nenhuma limpeza. Você geralmente deseja ativar o banco de dados novamente depois e desligar imediatamente imediatamente, como no seu exemplo. O guia de conceitos diz :
Este modo é destinado a situações de emergência, como quando nenhuma outra forma de desligamento é bem-sucedida.
Todos os exemplos que você dá executar um posto de controle , como parte do shutdown [normal]
ou shutdown immediate
checkpointing tão explícita é, presumivelmente, para reduzir o tempo necessário para a recuperação .
Conselho Geral:
- Não use
shutdown normal
.
- Use apenas
shutdown transactional
para desligamento assistido , quando desejar minimizar transações canceladas (assistidas apenas porque esse tipo de desligamento não é garantido para desligar o banco de dados se houver tempo limite excedido).
- Usar
shutdown immediate
para desligamento automático ou quando você não se importa com as transações em execução no momento.
- Não use
shutdown abort
(mais inicialização / desligamento), a menos que seja necessário - isso era mais comum nas versões anteriores do Oracle do que é hoje. Em outras situações (não em correção / atualização), se você precisar minimizar o tempo de inatividade, esse modo pode ser apropriado.
shutdown abort
? Interpretando o antagonista, se podemos confiar na Oracle para se recuperar corretamente quando a energia é puxada, não deveríamos confiar nela durante ashutdown abort
, principalmente se for mais rápido e vamos fazer imediatamente astartup restrict
e ashutdown immediate
? Em outras palavras, existem fatos que podemos comprovar contra o terrível aviso da Oracleshutdown abort
?