Защелка (latch) Oracle — это тип блокировки, применяемый для сериализации доступа к разделяемым структурам данных, которые находятся в глобальной системной области (System Global Area — SGA), где Oracle хранит разобранный скомпилированный SQL-код. При модификации чего-либо в этой разделяемой структуре вы должны позаботиться о том, чтобы в каждый момент времени только одному процессу был разрешен доступ к ней. (Очень плохо, если два процесса или потока попытаются обновить одну и ту же структуру в памяти одновременно - ее повреждение неизбежно.)
Поэтому в Oracle используется механизм защелкивания, который представляет собой облегченный метод блокировки для обеспечения последовательного доступа. Пусть слово “облегченный” не вводит в заблуждение. Защелки являются устройствами сериализации, которые в каждый момент времени разрешают доступ к структуре данных в памяти только одному процессу. Защелки, применяемые реализацией полного разбора, являются одними из наиболее часто используемых. Сюда входят защелки для разделяемого пула и библиотечного кеша. Это “долговременные” защелки, за которые часто соперничают пользователи. Все это означает, что при увеличении количества пользователей, пытающихся одновременно выполнить полный разбор SQL-кода, с течением времени производительность будет ухудшаться в геометрической прогрессии. Чем больше пользователей выполняет разбор, тем их большее количество ждет возможности защелкнуть разделяемый пул, и тем длиннее очереди и дольше ожидание.