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 shutdowncomandos SQL * Plus que alcançam isso em teoria, os quais impedem imediatamente que novas sessões se conectem à instância:
shutdown normalou 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 shutdownmodo 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 immediatecheckpointing 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 restricte ashutdown immediate? Em outras palavras, existem fatos que podemos comprovar contra o terrível aviso da Oracleshutdown abort?