Клиент упал - будет ли завершен запрос ?
OraDB
Дата: 29.07.2005 11:39:23
Теоритический вопрос.
Если я посылаю запрос на сервер, а после срубаю клиент, не дождавшись ответа сервера - поймет ли сервер, что клиент отвалился и прервет выполнение запроса или выполнит его до конца ?
А если это не запрос, а pl/sql блок ? А хранимая процедура ?
Зависит ли это поведение от клиента ?
Vadim_Maximov
Дата: 29.07.2005 11:41:00
Сервер прекратит выполнение. Тоже самое и с процедурами. Транзакции, если они не были зафиксированы, будут откачены.
Если конечно не настроен TAF.
micp
Дата: 29.07.2005 11:44:14
имхо, это смотря какой клиент... если закрыть баузер, который ждет выполнения запроса через апач, сервер будет дальше колбасить...
Oleg Afanasiev
Дата: 29.07.2005 11:46:37
Vadim_Maximov |
Тоже самое и с процедурами.
|
А мне казалось, что сервер в любом случае дожидается
окончания процедуры , да и любого pl/sql блока ....
Нет?
OraDB
Дата: 29.07.2005 11:46:47
А что такое TAF ?
|
имхо, это смотря какой клиент... если закрыть баузер, который ждет выполнения запроса через апач, сервер будет дальше колбасить... |
В данном случае, наверное, клиентом можно считать апач. А вот если завалить его - то, как я понял, сервер колбасить дальше уже ничего не будет.
Владимор Конев
Дата: 29.07.2005 11:48:17
micp |
имхо, это смотря какой клиент... если закрыть баузер, который ждет выполнения запроса через апач, сервер будет дальше колбасить... |
В этом случае клиентом, с точки зрения сервера, будет апач, а не браузер :)
Vadim_Maximov
Дата: 29.07.2005 11:55:05
Oleg Afanasiev |
Vadim_Maximov | Тоже самое и с процедурами.
|
А мне казалось, что сервер в любом случае дожидается окончания процедуры , да и любого pl/sql блока .... Нет? |
Вот фак, проверить решил...

create or replace procedure test_proc is
begin
loop
sys.dbms_system.ksdwrt(2, 'Дата: ' || TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')); -- Пишем время в алертлог
dbms_lock.sleep(1);
end loop;
end; |
И все короче... Срубил sqlplus, прибил сессию (она стала marked for kill) а он все хреначит...
Только убиение серверного процесса поможет видимо.
stdio
Дата: 29.07.2005 12:11:11
Vadim_Maximov |
И все короче... Срубил sqlplus, прибил сессию (она стала marked for kill) а он все хреначит... |
версия?
Vadim_Maximov
Дата: 29.07.2005 12:14:28
9.2.0.1
I_L_U_H_A
Дата: 29.07.2005 12:48:04
Вообще, чтобы не задаваться такими вопросами, используется трехзвенная архитектура клиент-сервер приложений-БД.
И уже на сервере приложений реализуется вся логика по поддержке сессий :)
Правда при зацикленных запросах, как было уже сказано, поможет только убиение серверного процесса