Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak znaleźć zablokowane wiersze w Oracle

Oracle Koncepcja blokowania różni się od innych systemów.

Gdy wiersz w Oracle zostaje zablokowany, sam rekord jest aktualizowany o nową wartość (jeśli istnieje), a ponadto blokada (która jest zasadniczo wskaźnikiem blokady transakcji, która znajduje się w segmencie wycofania) jest umieszczana bezpośrednio w rekordzie.

Oznacza to, że zablokowanie rekordu w Oracle oznacza aktualizację metadanych rekordu i wydanie logicznego zapisu strony. Na przykład nie możesz wykonać SELECT FOR UPDATE w obszarze tabel tylko do odczytu.

Co więcej, same rekordy nie są aktualizowane po zatwierdzeniu:zamiast tego aktualizowany jest segment wycofywania.

Oznacza to, że każdy rekord zawiera pewne informacje o transakcji, która ostatnio go zaktualizowała, nawet jeśli sama transakcja już dawno umarła. Aby dowiedzieć się, czy transakcja jest aktywna, czy nie (a co za tym idzie, czy rekord jest aktywny, czy nie), należy odwiedzić segment wycofania.

Oracle nie posiada tradycyjnego menedżera blokad, a to oznacza, że ​​uzyskanie listy wszystkich blokad wymaga przeskanowania wszystkich rekordów we wszystkich obiektach. Zajęłoby to zbyt długo.

Możesz uzyskać specjalne blokady, takie jak zablokowane obiekty metadanych (używając v$locked_object ), blokada czeka (za pomocą v$session ) itp., ale nie lista wszystkich blokad na wszystkich obiektach w bazie danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrób skumulowaną sumę w widoku wyrocznia

  2. Czy możemy zaktualizować wartości klucza podstawowego tabeli?

  3. Dokumentacja Oracle

  4. Jak wybrać z kolumny typu obiektu w Oracle 11g?

  5. Jak znaleźć uprawnienia i role nadawane użytkownikowi w Oracle?