VirtualIreland.ru - Виртуальная Ирландия
Вернуться   VirtualIreland.ru - Виртуальная Ирландия > Живем в Ирландии > IT и Связь

IT и Связь Обсуждение "айтишных" вопросов и средств связи

Ответ
 
Опции темы Опции просмотра
Старый 28.09.2005, 11:39   #1
Пенсионер всея Ирландея
 
Аватар для magician
 
Откуда: StormWind city
Сообщений: 15,195
Благодарности: 9,619 в 3,376 сообщениях Поиск благодарностей magician
По умолчанию Сезон Оракла попер однако

Дамы и Господа,

есть программуля которая запускает
что-то типа "Select Lock,Store_Code where store code = 'mystore' FOR UPDATE"
потом делает чо то и commit'ит их

Store_code ключик в другую табличку ...
записи по ключику в другой таблике тоже блокируются ?

и вопрос Oracl'истам ...
если между "For Update" и "commit" программуля падает....
то ...запесь будет как я понял залочена до какова то определенного значения ...нсли оно не 0 ... как это значение обзывается ?
__________________
невозможно испугать санкциями того, кому похер, так,что санкции против меня на этом форуме, мне феерически похер
magician вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 28.09.2005, 12:40   #2
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию

Я не ораклист, но коммон сенс подсказывает что другая табличка будет заблокирована только если между ними в явном виде создана ссылочная целостность (пошло как звучит ). Ну да если она создана то вторичный ключ тебе и так должны запретить изменять без дополнительных телодвижений.
Если нет линка - то блокируй вручную если боишься. Потеряешь правда знаменитое оракловское RDBWWDBR

Если запрос слетает то транзакция откатывается - это основные принципы СУБД. Откат может быть по ошибке, по таймауту сервера, по потере соединения между клиентом и сервером и т.д. и т.п.
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Старый 28.09.2005, 12:47   #3
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию

Да, запись (страница, екстенд, whatever) при откате будет залочена ровно на промежуток времени между началом транзакции и концом rollback.
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Старый 28.09.2005, 13:22   #4
Пенсионер всея Ирландея
 
Аватар для magician
 
Откуда: StormWind city
Сообщений: 15,195
Благодарности: 9,619 в 3,376 сообщениях Поиск благодарностей magician
По умолчанию

Цитата:
Сообщение от YellowMan
Да, запись (страница, екстенд, whatever) при откате будет залочена ровно на промежуток времени между началом транзакции и концом rollback.
серег - уелостность явно есть ...

между FOR UPADTE и commit'ом
програма завернула ласты,
оракл транзакцию не откатил
блин упинаю индусоф
__________________
невозможно испугать санкциями того, кому похер, так,что санкции против меня на этом форуме, мне феерически похер
magician вне форума   Ответить с цитированием
Старый 28.09.2005, 13:29   #5
Новичок
 
Сообщений: 5
Благодарности: 0 в 0 сообщениях Поиск благодарностей ao
По умолчанию Re: Сезон Оракла попер однако

Цитата:
Сообщение от magician
Дамы и Господа,

Store_code ключик в другую табличку ...
записи по ключику в другой таблике тоже блокируются ?
Ничего не блокируется. Записи блокируются только в одной таблице, которую изменяете

Цитата:
Сообщение от magician
и вопрос Oracl'истам ...
если между "For Update" и "commit" программуля падает....
то ...запесь будет как я понял залочена до какова то определенного значения ...нсли оно не 0 ... как это значение обзывается ?
Если вы писали программу, то тогда все откатится обратно, а если писали просто запросы, то заблокируется
ao вне форума   Ответить с цитированием
Старый 28.09.2005, 13:38   #6
Пенсионер всея Ирландея
 
Аватар для magician
 
Откуда: StormWind city
Сообщений: 15,195
Благодарности: 9,619 в 3,376 сообщениях Поиск благодарностей magician
По умолчанию Re: Сезон Оракла попер однако

Цитата:
Сообщение от ao
Ничего не блокируется. Записи блокируются только в одной таблице, которую изменяете
странно ... в другую на запись полей тоже небыло доступа ..
Цитата:
Сообщение от ao
Если вы писали программу, то тогда все откатится обратно, а если писали просто запросы, то заблокируется
ага, и нде можна посмотреть когда они разблокирубтся ?
__________________
невозможно испугать санкциями того, кому похер, так,что санкции против меня на этом форуме, мне феерически похер
magician вне форума   Ответить с цитированием
Старый 28.09.2005, 13:43   #7
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию

насколько я помню локиться будет только этот набор записей независимо от определенных связей до момента коммита.

но for update - это про локинг, а не про транзакцию как таковую.

в смысле самой транзакции насколько я помню разницы между for update и без него нет. но, мне кажется, в оракле принято явным образом роллбакить в случае эксепшна, разве нет?
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 28.09.2005, 13:46   #8
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию

> в другую на запись полей тоже небыло доступа .

как ты это конкретно проверял?
по идее не должно быть возможности удалить запись из второй таблицы связанную с записями из нашей или поменять значение первичного ключа в этих записях (из второй таблицы, на которую ссылается наша). но это не от того что там во второй талбице записи залочены, а от того что они залочены в первой.
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 28.09.2005, 15:26   #9
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию

Цитата:
но, мне кажется, в оракле принято явным образом роллбакить в случае эксепшна, разве нет?

Не могет такого быть ! А если явнороллбакить уже некому -что делать будем?

Цитата:
между FOR UPADTE и commit'ом
програма завернула ласты,
оракл транзакцию не откатил
блин упинаю индусоф
Это значит что она была закомиттчена раньше - возможно там каждая строчка кода есть сама себе транзакция.


Цитата:
Если вы писали программу, то тогда все откатится обратно, а если писали просто запросы, то заблокируется
Ничего не понял - можно развернуть мысль ?

Цитата:
серег - уелостность явно есть ...
Если целостность настроена явно - аналог МS SQL referential integrity то сервер тебе не даст поменять вторичные ключи явно. Т.е. если ты заблокируешь первичные то он будет вынужден заблокировать вторичные.
Он вообще никогда не должен тебе дать возможность менять вторичные ключи напрямую - ты этим разрушишь его механизм сохранения целостности
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Старый 28.09.2005, 15:40   #10
My name is Exaybachay
 
Аватар для KaraNagai
 
Откуда: Дублин, Ирландия
Сообщений: 21,481
Благодарности: 12,152 в 4,948 сообщениях Поиск благодарностей KaraNagai
По умолчанию

> Не могет такого быть ! А если явнороллбакить уже некому -что делать
> будем?

я могу сильно ошибаться, но по-моему если речь идет о едином запросе с коммитом в нем - то это надо делать внутри этого запроса. а если коммит внешний, то он по-моему вообще не сиквеловской командой делается, а средствами API. и открывать такую транзакцию по идее надо это... эксплиситли короче. тоже средствами APi.

я правда об оракле очень туманное представление имею.
__________________
митьки никого не хотят победить
KaraNagai вне форума   Ответить с цитированием
Старый 28.09.2005, 16:06   #11
Участник
 
Сообщений: 66
Благодарности: 6 в 4 сообщениях Поиск благодарностей Neo
По умолчанию Re: Сезон Оракла попер однако

Цитата:
Сообщение от magician
Дамы и Господа,

есть программуля которая запускает
что-то типа "Select Lock,Store_Code where store code = 'mystore' FOR UPDATE"
потом делает чо то и commit'ит их

Store_code ключик в другую табличку ...
записи по ключику в другой таблике тоже блокируются ?

и вопрос Oracl'истам ...
если между "For Update" и "commit" программуля падает....
то ...запесь будет как я понял залочена до какова то определенного значения ...нсли оно не 0 ... как это значение обзывается ?
Интересно какие команды вызываются между SELECT и COMMIT? Если DML - то транзакция будет полностью откачена, если DDL - то данные будут неявно commited.
Neo вне форума   Ответить с цитированием
Старый 28.09.2005, 16:12   #12
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию

Не, ты путаешь коммит и роллбак - коммит можно сделать автоматичный, т.е. каждая строка кода будет как неявная транзакция пока ты явно не напишешь begin tran.
внешний коммит через АПИ - это всего лишь посылка АПИ commit tran серверу.
Если клиент слетел то роллбак будет сделан сразу после того как менеджер соединений обнаружит этот факт. И rollback всегда автоматичный - иначе очень быстро случаться опаньки.

Кстати я по этому поводу имел очень познавательную неформальную дисскуссию с хлопцами из МС - а что будет если во время роллбака сервер влетит в деадлок ? Теоретически из этой ситуации вообще нет выхода - даже перезагрузка не спасет. В итоге мне было заявлено что такое не случиться вообще никогда - но почему мы тебе не скажем
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Старый 28.09.2005, 16:20   #13
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию

Цитата:
Если DML - то транзакция будет полностью откачена, если DDL - то данные будут неявно commited.
Вообще да Жень неплохо бы было весь запрос - если у тебя нет явно begin tran то в зависимости от настроек сервера
каждый select может восприниматься сервером как

begin tran
select ...
commit

Ну да я это уже говорил.
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 28.09.2005, 17:12   #14
Участник
 
Сообщений: 66
Благодарности: 6 в 4 сообщениях Поиск благодарностей Neo
По умолчанию

Цитата:
Сообщение от YellowMan
Цитата:
Если DML - то транзакция будет полностью откачена, если DDL - то данные будут неявно commited.
Вообще да Жень неплохо бы было весь запрос - если у тебя нет явно begin tran то в зависимости от настроек сервера
каждый select может восприниматься сервером как

begin tran
select ...
commit

Ну да я это уже говорил.
Не припоминаю я в Оракле такой конструкции "Begin Tran". В Оракле каждая транзакция начинается неявно после того, как commited предыдущая.

Хотя с Оракл API я не очень хорошо знаком... на 100% не гарантирую, может просто не видел такого.
Neo вне форума   Ответить с цитированием
Старый 29.09.2005, 10:41   #15
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию

Цитата:
Не припоминаю я в Оракле такой конструкции "Begin Tran". В Оракле каждая транзакция начинается неявно после того, как commited предыдущая.
Да, слазил я к конкурентам в документацию - действительно Оракл не понимает explicit transactions почему-то. Это даже в mySQL c InnoDB eсть.
Тогда следует понимать что если в скрипте есть COMMIT то все что от него и до начала или предыдущего коммита будет транзакцией, если коммита нет вообще то каждая операция будет сама себе транзакция ?

Женя, давай код в студию. Очень интересно как это скрипт с коммитом слетел а половина транзакции закоммитчилось. Это как часть заряда электрона.
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать на сообщения
Вы не можете добавлять вложения
Вы не можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT, времени сейчас: 17:54.


vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd., Русификация: zCarot, Vovan & Co
©2003-2025 VirtualIreland.ru - Виртуальная Ирландия