Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 00:22 01.05.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Oracle - snapshot в/у конкретни таблици  
Автор VladoVasilev (минаващ)
Публикувано01.08.06 11:13



Проблемът е следния :
Има две таблици, например :

CREATE TABLE ACCOUNT(ACC_ID NUMBER NOT NULL,
CREDIT NUMBER(19,6),
DEBIT NUMBER(19,6));
и
CREATE TABLE LOG_ACCOUNT(ACC_ID NUMBER NOT NULL,
CHANGEDON NUMBER(19,6));
и още една, примерно TBL1 - полетата нямат ниаккво значение. Това което искам е в рамките на една транзакция да изпълня общо 5 SELECT-a върху двете таблици ACCOUNT и LOG_ACCOUNT, като след всеки SELECT правя INSERT/UPDATE в TBL1 и по време на цялата процедура да работя в/у един snapshot на ACCOUNT и LOG_ACCOUNT таблиците и останалите потребители да продължават да ги променят, без аз да виждам новите промени. Върху тези 2 таблици изпълнявам само SELECT заявки. В същото време трябва да мога да модифицирам данните в TBL1 (затова и SET TRANSACTION READ ONLY май не ми върши работа.)



Тема Re: Oracle - snapshot в/у конкретни таблицинови [re: VladoVasilev]  
АвторAtanasTodorov (Нерегистриран)
Публикувано02.08.06 17:44



Ползвай Isolation Level "Serializable" за тази транзакция - така тя няма да вижда промените от другите транзакции, които са настъпили междувременно.



Тема Re: Oracle - snapshot в/у конкретни таблицинови [re: AtanasTodorov]  
Автор VladoVasilev (минаващ)
Публикувано03.08.06 10:52



И аз това направих :

BEGIN
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
PROC1;
PROC2;
PROC3;
PROC4;
COMMIT;
като тялото на всяка от процедурите, които викам, е нещо такова:

BEGIN
SELECT ... FROM ACCOUNT, LOG_ACCOUNT INTO...;
INSERT INTO TBL1......;
END;

Резултата е че при извикване на втората процедура PROC2 Oracle хвърля EXCEPTION ORA-08177: can't serialize access for this transaction.
Пак ще уточня, че по време на транзакцията TBL1 се променя единствено и само от тази транзакция, във всяка една от 4-те процедури, като е възможно в някои две от тях да се промени един и същи запис; таблиците ACCOUNT, LOG_ACCOUNT по време на транзакцията се променят от всички останали потребители, на мен ми трябва да виждам данните в тях така, както са били при започаване на транзакцията ми - това по време на цялата ми транзакция.



Тема Re: Oracle - snapshot в/у конкретни таблицинови [re: VladoVasilev]  
АвторAtanasTodorov (Нерегистриран)
Публикувано03.08.06 13:33



Наистина не би трябвало това да се дъни. Аз лично не съм се натъквал на подобен проблем, но съм чувал и други хора да се оплакват от това, че понякога при serializable се появява 8177 без да има очевидна причина. Това явно си е някакъв бъг в Оракъл. Май индексите понякога имат общо с този проблем. Имаш ли някакви експлицитни индекси в тия таблици? Каква версия на Оракъл ползваш?



Тема Re: Oracle - snapshot в/у конкретни таблицинови [re: AtanasTodorov]  
АвторBS (Нерегистриран)
Публикувано03.08.06 17:19



9.2.0.1?
ima shoden bug, koito e fixnat w 9.2.0.6




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.