ВАЛЕРИЙ МИХЕИЧЕВ, эксперт Oracle, СПАО «Ингосстрах», Valery.Mikheitchev@ingos.ru
Мониторинг блокировок в Oracle
Часть 2. Практический опыт диагностики блокировок
DML-блокировки составляют наибольшие проблемы в работе всех баз данных Oracle нашей организации. Расскажу, как мы их решаем
Виды блокировок, причины возникновения блокировок, а также методы их предупреждения изложены в статье [1].
Блокировки DML-операций в сессиях
DML-блокировки – это блокировки, которые защищают данные таблиц и проявляются при выполнении DML-операций (Data Manipulation Language), таких как insert, update, delete и select for update.
Блокировки DML устанавливают монопольную блокировку для строк, которые обрабатываются DML-операцией, и всякий раз, когда DML-операция собирается модифицировать строки в таблице (например, по update или delete), Oracle автоматически устанавливает монопольную блокировку уровня строки (тип TX) на каждую модифицированную строку таблицы. При этом блокировки DML удерживаются Oracle до тех пор, пока транзакция не завершится явно или неявно (явно транзакция завершается операцией commit или rollback, а неявно транзакция завершается после окончания сессии или в случае аварийного завершения процесса).
Из множества причин возникновения DML-блокировок, таких как:
- отсутствие завершения транзакций по окончании DML-операции через commit (rollback);
- отложенные по времени завершения транзакции, состоящей из DML-операций;
- блокировки, обусловленные длительным временем выполнения DML-операции, и др.
Целесообразно обратить особое внимание на первые две причины (как показала практика в нашей организации).
Первая причина – это отсутствие commit (rollback) после выполнения DML-операции и вторая причина – это отложенное завершение транзакции.
Первая причина блокировок может быть обусловлена тем, что «забыли» поставить commit после DML-операции. Эта проблема может быть легко устранена на основании анализа ряда диагностических запросов. Таким запросом, позволяющим посмотреть наличие блокировок между двумя сессиями, является нижеуказанный запрос (работает быстро и эффективно):
Статью целиком читайте в журнале «Системный администратор», №12 за 2015 г. на страницах 41-43.
PDF-версию данного номера можно приобрести в нашем магазине.
- Михеичев В. Мониторинг блокировок в Oracle. Методы предупреждения и автоматического устранения. // «Системный администратор», №4, 2015 г. – С. 30-35 (http://samag.ru/archive/article/2926).