sql >> Database >  >> RDS >> Oracle

Exclusief tafel (lees) slot op Oracle 10g?

Als u gewoon wilt voorkomen dat een andere sessie de gegevens wijzigt, kunt u

LOCK TABLE whatever
/

Dit blokkeert andere sessies om de gegevens bij te werken, maar we kunnen andere mensen niet blokkeren om deze te lezen.

Merk op dat in Oracle een dergelijke tabelvergrendeling zelden vereist is, omdat Oracle een beleid van leesconsistentie hanteert. Wat betekent dat als we een query uitvoeren die vijftien minuten duurt om uit te voeren, de laatst geretourneerde rij consistent is met de eerste rij; met andere woorden, als de resultatenset in omgekeerde volgorde was gesorteerd, zouden we nog steeds exact dezelfde rijen zien.

bewerken

Als u een wachtrij wilt implementeren (zonder daadwerkelijk Oracle's ingebouwde geavanceerde wachtrijfunctie ) dan SELECT ... FOR UPDATE is de weg te gaan. Met deze constructie kan één sessie een of meer rijen selecteren en vergrendelen. Andere sessies kunnen de ontgrendelde rijen bijwerken. Het implementeren van een echte wachtrij is echter behoorlijk omslachtig, tenzij u 11g gebruikt. Alleen in de nieuwste versie ondersteunt Oracle de SKIP LOCKED clausule. Meer informatie .



  1. Oracle ORA-12154:TNS:kan de servicenaamfout niet oplossen?

  2. Hoe ga je om met meerdere TimeZones in applicaties die data en tijden opslaan?

  3. Hoe te ontsnappen aan een regexp_replace in Oracle?

  4. Multipliciteitsbeperking geschonden SQL Server 2008 - CodeFirst