sql >> Databasteknik >  >> RDS >> Oracle

Oracle:Varför Oracle skapar en redo-ändringsvektor som beskriver ändringen av ångra-blocket när användaren utfärdar en instruktion för att ändra en datapost

Låt oss säga att du har en oavslutad (oengagerad) transaktion. Oracle har gjort allt du sa i frågan.

Nu kraschar maskinen.

DBA:n, efter återställningen av maskinen (eller på ny maskin, det beror på :)) återställer den senaste säkerhetskopian och tillämpar alla redo-loggar på den nya instansen. I omställningen finns också det som gjordes i steg 1. Men det arbetet är inte förbundet, så motorn behöver rulla tillbaka det. För detta behöver den återställningssegmentet. Men återställningssegmentet kommer inte att finnas där om du inte loggade in det i steg 3.

Jag vet att du kommer att fråga nu:varför tillämpar den loggar för oengagerat arbete? Det var min fråga också när jag läste om det. Jag vet inte säkert, men det kanske är lättare att göra det. Kanske är svårare att kontrollera för varje post i loggen att det är en del av en begången transaktion. Men det är så här Oracle fungerar:jag tillämpar alla redo-loggar och återställer sedan icke-engagerade transaktioner.




  1. oracle bitand funktion

  2. MySQL ERROR 2026 - SSL-anslutningsfel - Ubuntu 20.04

  3. Kombinera trigram med rankad sökning i django 1.10

  4. Jämför String i Oracle Case When