Это происходит потому, что Несколько сеансов в вашей базе данных занимают очень много времени для обработки некоторых операторов вставки. В результате количество активных сеансов очень велико, и база данных не может принимать новые сеансовые соединения.
Решение:
ENQ: ТМ - раздор событие, как правило, из-за отсутствия ограничений внешнего ключа на столе, который является частью операции Oracle DML. Как только вы устраните проблему, добавив ограничение внешнего ключа в соответствующую таблицу, конфликтное событие enq: TM исчезнет.
Ожидания на соревновании enq: TM - соревнование для сеансов, ожидающих выполнения операций вставки, почти всегда связаны с неопределенным ограничением внешнего ключа. Это происходит, когда ограничение внешнего ключа зависимой или дочерней таблицы, которое ссылается на родительской таблице отсутствует индекс связанного ключа. Oracle получает блокировку таблицы в дочерней таблице, если она выполняет изменения в столбце первичного ключа в родительской таблице, на который ссылается внешний ключ дочерней таблицы. Обратите внимание, что это полные блокировки таблицы (TM), а не блокировки на уровне строк (TX) -thus, эти блокировки не ограничены строкой, а всей таблицей. Естественно, после того, как эта блокировка таблицы будет приобретена, Oracle заблокирует все другие сеансы, которые стремятся изменить данные дочерней таблицы. После создания индекса в дочерней таблице, выполняющегося в столбце, который ссылается на родительскую таблицу, ожидания из-за конкуренции TM исчезнут.
Поскольку в вашем случае нет никаких ключевых иностранных ограничений на столах, вы можете проверить на приведенных ниже пунктов:
1) Проверьте, если любой из связанных таблиц имеет какие-либо disabled
внешние ключи. Если они будут найдены, включите их. Если у вас возникнет проблема при включении, то проверьте блокировку сессии ниже и убейте их.
SQL> select a.sid, a.serial#
from v$session a, v$locked_object b, dba_objects c
where b.object_id = c.object_id
and a.sid = b.session_id
and OBJECT_NAME='EMP';
SID SERIAL#
---- --------
753 8910
Затем убейте эту блокирующую сессию.
SQL> ALTER SYSTEM KILL SESSION '753,8910';
session killed.
Надеюсь, после этого вы сможете включить внешние ключи, если таковые имеются, а затем вопрос раздора будет решена.
Уважаемый XING, я думаю, вы пропустите индексное слово. я имею в виду неиндексированные ограничения внешнего ключа, может вызвать эту проблему. –