Qual è il modo migliore per prendere una “istantanea” di un database Oracle che viene costantemente aggiornato?

Voglio prendere una coerente istantanea di un database Oracle, che viene costantemente aggiornato da un TIBCO DB Adattatore.

Typcially TIBCO gli aggiornamenti di un gruppo di tabelle in una sola volta, e quindi si Impegna.
Se io di passare attraverso tutte le tabelle, di prendere una fotografia istantanea di una volta al giorno, poi ho potuto afferrare i dati da Una tabella prima del commit, e dalla tabella B dopo il commit – ma se a e B hanno Un rapporto, allora essi non corrispondono più correttamente.

È “SET TRANSACTION LEGGERE SOLO” il modo di andare?

ad esempio,

COMMIT
SET TRANSACTION READ ONLY
SELECT * FROM A WHERE A.ADB_UPDATEDDATE > TODAY()-1 
SELECT * FROM B WHERE B.ADB_UPDATEDDATE > TODAY()-1 
etc.
COMMIT

(OGGI sintassi potrebbe non essere corretto, non è importante!)

O c’è qualcosa di meglio, che posso fare?

InformationsquelleAutor Bhasker Pandya | 2010-10-30

6 Replies
  1. 4

    Questo è molto facile da fare utilizzando Oracle funzione chiamata Flashback. Come sapete, quando la precedente versione (di tempo o di scn) ed è all’interno del flashback finestra, si può semplicemente query.

    InformationsquelleAutor Gaius

  2. 7

    Se con “istantanea” si intende una copia completa del database in un coerente modalità, quindi vorrei ripristinare il database da un backup e recuperare fino al punto desiderato nel tempo. Oracle processi di recupero, si prenderà cura di consistenza (rilevate dal Sistema di Cambiare Numero o SCN).

    Se si utilizza RMAN per operazioni di backup e recovery, c’è un “DUPLICATO DATABASE di” comando con un tempo di una clausola che fanno di questo relativamente indolore.

    D’altra parte, se siete solo in cerca di estrarre pochi tavoli in un coerente modalità posso pensare a due opzioni:

    • Esportare il gruppo di tabelle con i
      coerente=y opzione (più vecchi) exp
      utilità
    • Utilizzare il più recente expdp utilità con il flashback_time opzione
    Io sono sempre stupito di come le persone tendono a evitare di RMAN. In Oracle mondo, è la cosa migliore dopo il pane a fette.
    +500 RMAN…

    InformationsquelleAutor dpbradley

  3. 1

    Oltre a dpbradley suggerimenti, se è solo un paio non troppo grandi tavoli e si dispone di flashback query è possibile creare una copia di tabelle utilizzando un flashback query come lo stesso timestamp.

    InformationsquelleAutor Leigh Riffel

  4. 0

    Prima di tutto come gli altri ragazzi hanno detto che ci sono strumenti speciali per “snapshot” in Oracle ed è meglio usarlo per il compito per me. Ma se guardiamo al problema, in particolare, vedremo che si tratta di un non ripetibili legge & letture fantasma
    problema [1], così è tutto su di transazione livelli di isolamento. Abbiamo il SERIALISABLE livello di Oracle per evitare (ma questo non significa che è un bene per il vostro compito, nel caso generale) questi problemi [2], quindi, se non si desidera ottenere alcuni sorprese e desidera ottenere il vostro database in stato coerente in un certo momento del tempo (il punto di inizio della transazione di tempo) si dovrebbe fare questo:

    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

    Link:

    1. https://en.wikipedia.org/wiki/Isolation_(database_systems)
    2. http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_10005.htm#SQLRF01705

    InformationsquelleAutor Ilia Maskov

Lascia un commento