Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да намерите заключени редове в Oracle

Oracle Концепцията на заключване е доста различна от тази на другите системи.

Когато има ред в Oracle се заключва, самият запис се актуализира с новата стойност (ако има такава) и в допълнение, заключване (което по същество е указател към заключване на транзакцията, което се намира в сегмента за връщане назад) се поставя направо в записа.

Това означава, че заключването на запис в Oracle означава актуализиране на метаданните на записа и издаване на логическа запис на страница. Например, не можете да направите SELECT FOR UPDATE в таблично пространство само за четене.

Нещо повече, самите записи не се актуализират след комит:вместо това сегментът за връщане назад се актуализира.

Това означава, че всеки запис съдържа известна информация за транзакцията, която го е актуализирала последно, дори ако самата транзакция отдавна е умряла. За да разберете дали транзакцията е жива или не (и следователно дали записът е жив или не), е необходимо да посетите сегмента за връщане назад.

Oracle няма традиционен мениджър на заключване и това означава, че получаването на списък с всички ключалки изисква сканиране на всички записи във всички обекти. Това ще отнеме твърде много време.

Можете да получите някои специални ключалки, като заключени обекти с метаданни (използвайки v$locked_object ), заключване изчаква (използвайки v$session ) и т.н., но не и списъкът с всички заключвания на всички обекти в базата данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да решите ORA-02014:не може да избере ЗА АКТУАЛИЗИРАНЕ от изглед с DISTINCT, GROUP BY

  2. Преобразуване на Oracle от редове към колона

  3. Как да използвам текущата дата в HQL заявка с база данни на Oracle?

  4. Два външни ключа вместо първичен

  5. Импортирайте CSV файл в таблицата на Oracle с помощта на съхранена процедура