|
Тема
|
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" за тази транзакция - така тя няма да вижда промените от другите транзакции, които са настъпили междувременно.
| |
|
И аз това направих :
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
| |
|
|
|
|