sql >> Database >  >> RDS >> Oracle

Oracle:waarom Oracle een wijzigingsvector voor opnieuw uitvoeren maakt die de wijziging in het blok voor ongedaan maken beschrijft wanneer de gebruiker een instructie geeft om een ​​gegevensitem te wijzigen

Stel dat u een onvoltooide (niet-vastgelegde) transactie heeft. Oracle heeft alle dingen gedaan die u in de vraag zei.

Nu crasht de machine.

De DBA herstelt na het herstel van de machine (of op een nieuwe machine, dat hangt ervan af :)) de laatste back-up en past alle herhalingslogboeken toe op het nieuwe exemplaar. In het opnieuw doen zit ook wat er in stap 1 is gedaan. Maar dat werk is niet vastgelegd, dus de motor moet het terugdraaien. Hiervoor heeft het het rollback-segment nodig. Maar het rollback-segment is er niet als u het niet bij stap 3 hebt geregistreerd.

Ik weet dat je je nu zult afvragen:waarom past het logboeken toe voor niet-vastgelegd werk? Dat was ook mijn vraag toen ik erover las. Ik weet het niet zeker, maar misschien is het makkelijker om het te doen. Misschien is het moeilijker om voor elke invoer in het logboek te controleren of het deel uitmaakt van een vastgelegde transactie. Dit is echter hoe Oracle werkt:ik pas alle redo-logs toe en draai niet-vastgelegde transacties terug.




  1. maanden tussen twee datums in sql-server met begin- en einddatum van elk van hen in sql-server

  2. Voorbeelden van het converteren van 'smalldatetime' naar 'datetime' in SQL Server (T-SQL)

  3. SELECT voorkomen van een combinatie van kolommen met een minimumvoorwaarde op de COUNT

  4. Hoe toon ik het schema van een tabel in een MySQL-database?