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

Oracle:Hvorfor Oracle opretter en redo-ændringsvektor, der beskriver ændringen til fortryd-blokken, når brugeren udsteder en instruktion om at ændre et dataelement

Lad os sige, at du har en uafsluttet (uforpligtet) transaktion. Oracle har gjort alt, hvad du sagde i spørgsmålet.

Nu går maskinen ned.

DBA'en, efter gendannelse af maskinen (eller på ny maskine, det afhænger af :)) gendanner den sidste backup og anvender alle redo-logfiler på den nye instans. I redo er også, hvad der blev gjort i trin 1. Men det arbejde er ikke forpligtet, så motoren skal rulle det tilbage. Til dette har den brug for rollback-segmentet. Men rollback-segmentet vil ikke være der, hvis du ikke loggede det på trin 3.

Jeg ved, at du vil spørge nu:hvorfor anvender den logfiler for uforpligtende arbejde? Det var også mit spørgsmål, da jeg læste om det. Jeg ved det ikke med sikkerhed, men måske er det nemmere at gøre det. Måske er det sværere at kontrollere for hver indtastning af loggen, at det er en del af en forpligtet transaktion. Dette er imidlertid, hvordan Oracle fungerer:Jeg anvender alle redo-logfilerne og tilbagefører derefter ikke-forpligtede transaktioner.




  1. Forstå MapReduce-typer og -formater

  2. Oracle - sletning af dubletter

  3. PDO MySQL backup funktion

  4. Bestilling af varer med matchende tags efter antal tags, der matcher