ORACLE обновляет два столбца CLOB - возможна ли блокировка таблицы для дальнейших обновлений?

Мне нужно обновить таблицу ORA с двумя столбцами CLOB.

Я нашел много решений для этого (одно с select x, y into x_loc, y_loc from table for update, а затем dbms_lob.write() + commit), но я понял, что это так же просто, как и должно быть:

UPDATE table SET
    clob1 = TO_CLOB(VARCHAR2_VALUE),
    clob2 = TO_CLOB(VARCHAR2_VALUE)
WHERE condition

После выполнения этого запроса из приложения PHP я столкнулся со странным поведением, когда я не могу выполнить какое-либо другое обновление для этой таблицы (и/или конкретной строки) - приложение просто зависает прямо при другом обновлении (подтверждено отладкой). При попытке выполнить запрос на обновление с помощью sqldeveloper кажется, что проблемы с блокировкой нет.

Есть ли вероятность того, что таблица/строка осталась заблокированной после обновления CLOB? Должен ли я сделать/сделать фиксацию после обновления CLOB с использованием данного запроса на обновление? Как я могу снять эту блокировку, если она есть?

Большое спасибо за Ваши ответы!


person shadyyx    schedule 26.04.2012    source источник
comment
@iddqd Пожалуйста, заключите его в полное предложение и опубликуйте как ответ, чтобы я мог принять ваш ответ. Конечно, после выполнения только COMMIT таблица освобождается ;-) Спасибо!!!   -  person shadyyx    schedule 26.04.2012


Ответы (1)


Вы должны зафиксировать каждый запрос DML (INSERT, UPDATE, DELETE).

Неважно, используете ли вы CLOB или нет.

person baklarz2048    schedule 27.04.2012
comment
Не уверен в необходимости фиксации после каждой INSERT/UPDATE/DELETE - до сих пор этого не делал, и до обновления CLOB проблем не возникало. Но фиксация после обновления CLOB сработала (сняла блокировку) и работает (с тех пор никаких блокировок). Спасибо! - person shadyyx; 27.04.2012