Metodo di spegnimento Oracle


9

La chiusura di un database prima di eseguire un aggiornamento o una patch può essere eseguita in diversi modi.

shutdown immediate;

o

shutdown abort;
startup restrict;
shutdown immediate;

o

shutdown abort;
startup restrict;
shutdown;

o

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

Naturalmente ci sono anche altre opzioni. Quale dovrebbe essere preferito e perché?

Risposte:


12

L'obiettivo durante l'arresto per manutenzione (o backup a freddo) è che il database venga lasciato in uno stato coerente senza necessità di rollback / ripristino all'avvio.

Ci sono 3 shutdowncomandi SQL * Plus che raggiungono questo obiettivo in teoria, e tutti impediscono immediatamente nuove sessioni di connessione all'istanza:

  1. shutdown normalo semplicemente shutdown: attende la disconnessione di tutte le sessioni. Questa modalità viene utilizzata raramente in pratica perché si basa su client ben educati che non lasciano aperte le connessioni. Questa era l'unica shutdownmodalità che non annullava l'esecuzione delle transazioni.
  2. shutdown transactional: disconnette le sessioni una volta completate le transazioni in corso, impedendo l'avvio di nuove transazioni.
  3. shutdown immediate: disconnette tutte le sessioni immediatamente e ripristina le transazioni interrotte prima di chiudere. Si noti che le disconnessioni sono immediate, ma l'arresto potrebbe non essere poiché eventuali transazioni interrotte potrebbero richiedere del tempo per il rollback.

La quarta modalità di shutdownè shutdown abort. È come tirare il cavo di alimentazione: l'istanza si interrompe ora senza alcuna pulizia. Di solito si desidera riavviare il database in seguito e chiuderlo in modo pulito immediatamente dopo, come nell'esempio. La guida ai concetti dice :

Questa modalità è destinata a situazioni di emergenza, come quando nessun'altra forma di arresto ha esito positivo.

Tutti gli esempi si danno eseguire un posto di controllo come parte del shutdown [normal]o shutdown immediatecheckpoint in modo esplicito è presumibilmente per ridurre il tempo necessario per il recupero .

consiglio generale:

  • Non usare shutdown normal.
  • Utilizzare solo shutdown transactional per l'arresto attendibile , quando si desidera ridurre al minimo le transazioni annullate (solo perché questo tipo di arresto non è garantito per arrestare il database in caso di violazione dei timeout).
  • Utilizzare shutdown immediateper l'arresto automatico o quando non si è interessati alle transazioni attualmente in esecuzione.
  • Non utilizzare shutdown abort(più avvio / arresto) a meno che non sia necessario: questo era più comune nelle versioni precedenti di Oracle che oggi. In altre situazioni (non patch / aggiornamento), se è necessario ridurre al minimo i tempi di inattività, questa modalità potrebbe essere appropriata.

Potete fornire ulteriori dettagli sugli svantaggi di shutdown abort? Interpretando l'antagonista, se possiamo fidarci di Oracle per recuperare correttamente quando il potere viene tirato, non dovremmo fidarci di esso durante un shutdown abort, in particolare se è più veloce e faremo immediatamente un startup restricte un shutdown immediate? In altre parole, ci sono fatti che possiamo vedere per sostenere il terribile avvertimento di Oracle contro shutdown abort?
Leigh Riffel,

@Leigh - L'unico pericolo speciali Io conosco relativa shutdown abortsi riferisce a sostegno accidentale di log on-line , ma che è solo nel caso in cui non fai in seguito un arresto pulito. Se sai cosa stai facendo, penso che shutdown abortpossa essere considerato perfettamente sicuro - e non sono sicuro che la posizione di Oracle sia considerata un "terribile avvertimento" ;-)
Jack dice che prova topanswers.xyz il

3

Preferisco il metodo di interruzione dell'arresto perché è il modo più veloce per arrestare un database. ci sono alcune operazioni che non possono essere eseguite dopo l'interruzione di un arresto, ad es

  • ricreare il file di controllo del database con creare resetlog dei file di controllo (per rinominare il database, rinominare i file di registro per rinominare i file di dati)
  • cambia il dbid con la procedura da dbms_backup_restore (questo era l'unico metodo in 8i per cambiare il dbid)

in entrambi i casi il database è stato danneggiato e deve essere ripristinato da un backup completo.

da 9i la ridenominazione del database o la modifica di dbid possono essere eseguite con l' utilità dbnewid . per quanto ne so l'utilità controlla se il database è stato chiuso correttamente. la ridenominazione di file di dati, tempfile e file di log può essere eseguita eseguendo le istruzioni sql appropriate senza ricreare il file di controllo, ovviamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.