То, что упомянул Бранко, является одной из причин.Это ошибка, которую я совершил при отладке приложений с использованием транзакционного запроса, когда я просто прекращаю отладку после выполнения запроса вставки без фиксации / отката с помощью тонкого клиента oracle.jdbc.OracleDriver.
Однако , чтоздесь не упоминается, что если вам случится запустить клиентский браузер SQL, т. е. SQL Developer, чтобы проверить вашу таблицу или одновременно проверить оператор вставки, они также являются виновниками, способствующими замораживанию.В режиме отладки при пошаговом выполнении кода (т. Е. Statement.executeUpdate ();) вы заметите, что ваш код, кажется, ожидает ответа сервера бесконечно ... очень долго ... без исключения.Это происходит, если вы снова выполните предыдущий незафиксированный запрос.И вы обнаружите, что ваше соединение с браузером SQL также затронуто.
Это также зависит от того, как вы построите запрос
i.e:
insert into TB1(ID, Name) values (1, 'User1') x 2 times w/o commit --> freeze on 2nd time
insert into TB1(ID, Name) values (SEQ.nextval, 'User1') x 2 times w/o commit --> OK, won freeze on 2nd time
*where ID = auto number*
Решение:
Остановите сервер отладки / выполнениякоторые управляют соединением.Закройте / отключите все ваши браузеры SQL.Самый простой способ - закрыть браузер SQL, перезапустить IDE eclipse / netbean, если вы не уверены.
В некоторых случаях вам могут понадобиться права администратора баз данных, чтобы освободить (откатить / зафиксировать) эти незавершенные транзакции.Сервер RDBMS ожидает действий по этому запросу после того, как тот же столбец переходит к следующему запросу.
Не используйте транзакционный запрос, если в этом нет необходимости, путем установки объекта Connection:
<connection>.setAutoCommmit(true)