sql >> Databáze >  >> RDS >> Oracle

Jak najít zamčené řádky v Oracle

Oracle Koncepce zamykání je zcela odlišná od koncepce ostatních systémů.

Když řádek v Oracle se uzamkne, samotný záznam se aktualizuje novou hodnotou (pokud existuje) a navíc se přímo do záznamu umístí zámek (což je v podstatě ukazatel na zámek transakce, který se nachází v segmentu vrácení zpět).

To znamená, že zamykání záznamu v Oracle znamená aktualizaci metadat záznamu a vydání logického zápisu stránky. Nemůžete například provést SELECT FOR UPDATE v tabulkovém prostoru pouze pro čtení.

Kromě toho se samotné záznamy po odevzdání neaktualizují:místo toho se aktualizuje rollback segment.

To znamená, že každý záznam obsahuje nějaké informace o transakci, která jej naposledy aktualizovala, i když samotná transakce již dávno zemřela. Chcete-li zjistit, zda je transakce aktuální nebo ne (a tedy zda je záznam živý či nikoli), je nutné navštívit segment rollback.

Oracle nemá tradičního správce zámků, což znamená, že získání seznamu všech zámků vyžaduje skenování všech záznamů ve všech objektech. To by trvalo příliš dlouho.

Můžete získat některé speciální zámky, jako jsou zamčené objekty metadat (pomocí v$locked_object ), zámek čeká (pomocí v$session ) atd., ale nikoli seznam všech zámků na všech objektech v databázi.



  1. Chci obnovit databázi s jiným schématem

  2. Digitální transformace:Vše začíná uvažováním dat

  3. Změňte číslo data aplikace Excel na datum Oracle

  4. Naformátujte číslo jako procento v MySQL