O encerramento de um banco de dados antes de fazer uma atualização ou um patch pode ser feito de várias maneiras.
shutdown immediate;
ou
shutdown abort;
startup restrict;
shutdown immediate;
ou
shutdown abort;
startup restrict;
shutdown;
ou
alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;
Claro que existem outras opções também. Qual deve ser preferido e por quê?
O objetivo ao desligar para manutenção (ou backup frio) é que o banco de dados seja deixado em um estado consistente sem necessidade de reversão/recuperação na inicialização.
Existem 3
shutdown
comandos SQL*Plus que conseguem isso em teoria, todos os quais impedem imediatamente que novas sessões se conectem à instância:shutdown normal
ou apenasshutdown
: espera que todas as sessões sejam desconectadas. Este modo raramente é usado na prática porque depende de clientes bem comportados que não deixam conexões abertas. Este costumava ser o únicoshutdown
modo que não cancelava as transações em execução.shutdown transactional
: desconecta as sessões assim que as transações atualmente em execução forem concluídas, 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 desligamento pode não ser , pois qualquer transação interrompida pode levar algum tempo para ser revertida.O quarto modo de
shutdown
éshutdown abort
. Isso é como puxar o cabo de alimentação - a instância para agora sem nenhuma limpeza. Você geralmente deseja trazer o banco de dados novamente depois e desligar imediatamente depois, como no seu exemplo. O guia de conceitos diz :Todos os exemplos que você dá executam um ponto de verificação como parte do
shutdown [normal]
oushutdown immediate
tão explícito ponto de verificação é presumivelmente para reduzir o tempo necessário para a recuperação .Conselho Geral:
shutdown normal
.shutdown transactional
apenas para desligamento assistido , quando desejar minimizar as transações canceladas (assistido apenas porque esse tipo de desligamento não garante o desligamento do banco de dados se os tempos limite forem violados).shutdown immediate
para desligamento automático ou quando você não se importa com as transações em execução no momento.shutdown abort
(mais inicialização/desligamento) a menos que seja necessário - isso era mais comum em versões muito anteriores do Oracle do que hoje. Em outras situações (não patch/upgrade), se você precisar minimizar o tempo de inatividade , este modo pode ser apropriado.Prefiro o método de cancelamento de desligamento porque é a maneira mais rápida de desativar um banco de dados. há alguma operação que não pode ser feita após um aborto de desligamento, por exemplo
em ambos os casos, o banco de dados foi danificado e deve ser restaurado a partir de um backup completo.
desde 9i a renomeação do banco de dados ou a alteração do dbid pode ser feita com o utilitário dbnewid . até onde eu sei, o utilitário verifica se o banco de dados foi desligado corretamente. renomear arquivos de dados, arquivos temporários e arquivos de log pode ser feito executando as instruções sql apropriadas sem recriar o arquivo de controle, é claro.