sql >> Databasteknik >  >> RDS >> Oracle

Hur återställer man data i en Oracle-tabell?

För det första, begick du förändringen? Om inte kan du helt enkelt göra en rollback för att återställa dina ändringar.

Om du antar att du gjorde dina ändringar, ändrar andra användare tabellen samtidigt? Behöver du bevara de ändringar som andra har gjort och bara återställa de ändringar du gjort i din transaktion? Eller kan du återställa hela tabellen till en tidpunkt innan dina ändringar gjordes?

Om du kan återställa hela tabellen till en tidpunkt

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

kommer att returnera en tabell till det tillstånd den var i för 10 minuter sedan förutsatt att UNDO nödvändigt för att göra det förblir tillgänglig (så att du bara har en begränsad tid efter att du har gjort ett misstag för att kunna flashbacka det misstaget). För att utfärda en FLASHBACK TABLE , du måste också se till att

  • Tabellen har aktiverat radförflyttning ALTER TABLE <<table name>> ENABLE ROW MOVEMENT
  • Du måste ha FLASHBACK privilegier på bordet eller FLASHBACK ANY TABLE systembehörighet.


  1. Dynamiskt genererad CURSOR i Postgresql

  2. Varför kan jag inte använda kolumnalias i nästa SELECT-uttryck?

  3. VÄLJ flera rader WHERE som matchar två villkor

  4. Bästa sättet att lagra en array i MySQL-databas?