powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка с alert log
9 сообщений из 9, страница 1 из 1
Задачка с alert log
    #39285749
DoubleDouchebag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Моя задача - искусственно создать deadlock и чтоб запись о нем появилась в alert log - е
Как я ее решал:
1) открыл 2 окна PL/SQL девелопера (id сессий будут разные, сессии, видимо, тоже)
2) в одном из них создал таблицу
Код: plsql
1.
create table deadlock_t ( p int, w varchar2(10) )


3) выполнил действия
Код: plsql
1.
2.
3.
4.
update deadlock_t set w = 'cn' where p = 1; -- в первой сессии (окне)
update deadlock_t set w = 'cy' where p = 2; --во второй сессии (окне)
update deadlock_t set w = 'cn' where p = 2; -- в первой сессии (окне)
update deadlock_t set w = 'cy' where p = 1; --во второй сессии (окне)


Вроде по законам жанра должен возникнуть дедлок, девелопер ошибки не выдал, но последняя транзакция не прошла, значит оракл наткнулся на дедлок и откатил последнюю транзакцию(хотя в последнем я могу ошибаться).

Однако в alert log записи о новом дедлоке не появилось, как сделать так, чтобы появилась?
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285816
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "девелопер ошибки не выдал, но последняя транзакция не прошла"?

Стесняюсь спросить, а строки то в таблицу предварительно вставил с p=1 и p=2?
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285817
DoubleDouchebag,

Если цель только получить дедлок, то проще это делать в одной сессии.
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285910
DoubleDouchebag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

Это значит что в девелопере не выскочило сообщение об ошибке, но в месте с этим, оба значения в поле w были 'cn', а значит последняя команда
Код: plsql
1.
update deadlock_t set w = 'cy' where p = 1; --во второй сессии (окне)


не отработала

Да, забыл сказать, 1 и 2 были вставлены в p
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285916
DoubleDouchebag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автономное плавание,
Как тогда вообще возникнет дедлок, если для его появления нужны хотя бы 2 сессии, чтобы одна заставляла ждать другую (захватила блокировку чего-то) и со второй так же?
Если работать из одной сессии все команды просто отработают (только что проверил) и последняя команда в том числе, не как у меня.
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285924
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoubleDouchebagКак тогда вообще возникнет дедлок, если для его появления нужны хотя бы 2 сессии2 транзакции
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285928
DoubleDouchebag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Пусть так, но как быть с записью в alert log?
...
Рейтинг: 0 / 0
Задачка с alert log
    #39285936
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoubleDouchebagно как быть с записью в alert log?Чтобы там появилась ORA-60, она должна была появиться в приложении. Ты же её не видел, т.е. не сумел поставить эксперимент. На, горе-испытатель:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare
  x varchar2(1);
  procedure p
  is
    pragma autonomous_transaction;
  begin
    select * into x from dual for update;
  end;
begin
  select * into x from dual for update;
  p;
end;
/

...
Рейтинг: 0 / 0
Задачка с alert log
    #39285980
DoubleDouchebag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Спасибо большое :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка с alert log
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]