Oracle
 sql >> Database >  >> RDS >> Oracle

Come ripristinare i dati in una tabella Oracle?

Innanzitutto, hai eseguito il commit del cambiamento? In caso contrario, puoi semplicemente emettere un rollback per annullare le modifiche.

Supponendo che tu abbia eseguito il commit delle modifiche, altri utenti stanno modificando la tabella contemporaneamente? Hai bisogno di preservare le modifiche apportate da altri e ripristinare solo le modifiche apportate nella transazione? Oppure puoi ripristinare l'intera tabella a un punto nel tempo prima che venissero apportate le modifiche?

Se riesci a ripristinare l'intera tabella in un determinato momento

FLASHBACK TABLE <<table name>>
  TO TIMESTAMP( systimestamp - interval '10' minute )

restituirà una tabella allo stato in cui era 10 minuti fa supponendo che UNDO necessario per farlo rimane disponibile (quindi hai solo un tempo limitato dopo aver commesso un errore per poter eseguire il flashback di quell'errore). Per emettere una FLASHBACK TABLE , devi anche assicurarti che

  • La tabella ha abilitato lo spostamento delle righe ALTER TABLE <<table name>> ENABLE ROW MOVEMENT
  • Devi avere FLASHBACK privilegi sulla tabella o su FLASHBACK ANY TABLE privilegio di sistema.