Domanda

Si supponga che un'istanza di Oracle deve essere recuperato dopo un disastro. Non sequenze vengono ripristinati allo stato iniziale, o l'ultimo stato salvato, o vengono memorizzate nella cache i valori conservati?

Grazie mille. : -)

È stato utile?

Soluzione

I valori sequnce sono memorizzati nella SYSTEM.SEQ $ (Credo) tavolo, e una cache viene mantenuta in memoria dei successivi valori da utilizzare, con la dimensione di quella cache essendo dipendente dal valore CACHE per la sequenza .

Quando la cache è esaurita la SEQ $ tabella viene aggiornata ad un nuovo valore (in modo non coerente -. Cioè senza controllo transacton della sessione utente l'applicazione) e la successiva dire 100 valori (se CACHE = 100) sono letto dalla memoria.

Supponiamo che si sta utilizzando una sequenza con una dimensione della cache di 20. Quando si seleziona un certo valore dalla sequenza, diciamo 1400, la tabella di SEQ $ viene aggiornata per un valore di 1420. Anche se rollback la transazione SEQ $ ha ancora quel valore fino a quando sono stati utilizzati i prossimi 20 valori della sequenza, momento in cui SEQ $ viene aggiornato al 1440. Se si è quindi solo utilizzato il valore di 1.423 e un incidente esempio si verifica, poi, quando il sistema si riavvia il valore accanto a essere letto dal sequnce sarà 1440.

Quindi, sì l'integrità della sequenza verrà conservata e numeri non sarà "ristampato". Si noti che lo stesso vale per un arresto regolare - quando si riavvia si otterrà un nuovo valore di 1.440 nell'esempio di cui sopra. Sequenze non sono garantite per essere luce libera in pratica per questo motivo (anche perché l'utilizzo di un valore e quindi rotolare indietro non ripristina il valore al cache).

Altri suggerimenti

Non che io abbia alcuna esperienza con questo, ma ho molto presumo che una ripresa ad un costante cambiamento di sistema statale numero sarebbe anche restituire la sequenza per l'ultimo stato salvato. Qualsiasi altra cosa sarebbe abbastanza inutile in termini di recupero.

Per quanto riguarda i valori memorizzati nella cache, questi sono (può essere) ha perso anche quando l'istanza chiude bassi in modo ordinato (*): Istanze cache di un certo numero di valori di sequenza in memoria (SGA) invece di andare al database ogni volta. Valori sequenza inutilizzato che l'istanza ha riservato può "scomparire", lasciando con lacune nella sequenza.

(*) documentazione 8i menziona che questo può accadere con istanze parallele (RAC), nel qual caso la sequenza può anche non essere strettamente crescente (ma ancora unico), documenti 10g dicono che accade nel caso di un guasto istanza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top