|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Добрый день! Может кто знает почему так может получаться. Есть таблица (table1), надо перелить данные из нее в другую. Для начала она блокируется Код: plsql 1.
и я считаю количество строк в ней Код: plsql 1.
потом создаю промежуточную таблицу на основе table1 Код: plsql 1.
и считаю сколько в нее строчек пришло Код: plsql 1.
дальше сравниваю Код: plsql 1. 2. 3. 4.
И вот иногда случаются такие моменты когда эти количества расходятся. Как такое может быть? Ведь я блокирую таблицу! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 12:59 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З., такое как только не может быть. вы лучше расскажите, что за задачу пытаетесь решить. возможно, выбранный вами для этого способ - не самый лучший. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:06 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З.Ведь я блокирую таблицу!В момент create table могли измениться строки в table1, а к моменту последующего select еще и в table2. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:13 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З., execute immediate ('create table table2 as select * from table1'); снимит блокировку .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:14 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Stax, Даже если блокировка снята при создании table2, то подсчет количества в table1 идет до этого, и тут блокировка должна стоять и создание table2 идет еще при блокировке. Пусть после этого блокировка снимается, но это же должно происходить после выполнения Код: plsql 1.
а не во время. Или всё же это происходит во время создания таблицы? Признаюсь, я не в курсе как Оракл ведет себя в этом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:31 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
-2-, в table2 не могли, технически это возможно, но организационно - нет. Действительно, получается что они изменились в table1, больше негде, но мне не дает покоя - каким образом! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:34 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З.Или всё же это происходит во время создания таблицы?RTFM Data Definition Language (DDL) Statements (FAQ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 13:49 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З., Запросто Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
.... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:11 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Elic, проблема не в том что блокировка слетает ПОСЛЕ выполнения Код: plsql 1.
а в том что похоже это происходит во время создания таблицы, перед тем как заливаются данные из select * from table1 хотя это одна SQL-команда, но выполняется она, видимо, в 2 этапа. Ладно, спасибо всем за участие, мне было просто интересно почему так происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:23 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З.проблема не в том что блокировка слетает ПОСЛЕ выполненияПрактикуешься в черессловном скорочтении? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:38 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З.похожеЛамер построил свою личную маленькую модель мира. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:41 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Дмитрий З.блокировка слетает Никто никуда не слетает. Просто DDL в oracle дважды фиксирует транзакцию - до и после. Со всеми вытекающими. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:29 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
andrey_anonymousДмитрий З.блокировка слетает Никто никуда не слетает. Просто DDL в oracle дважды фиксирует транзакцию - до и после. Со всеми вытекающими. Что в результате нарушает ACID. Так-что по большому счету CTAS должен бы пыполнять SELECT AS OF SCN первого commit. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:46 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
andrey_anonymousПросто DDL в oracle дважды фиксирует транзакцию - до и после.Кстати, уже не всегда. PTT ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:56 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
SYЧто в результате нарушает ACID.Да ну? И фантомы есть? SYТак-что по большому счету CTAS должен бы пыполнять SELECT AS OF SCN первого commit.Какая разница-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:05 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
Первый commit отпустит exclusive lock и есть вероятность изменения таблицы до того как select зафиксирует свой AS OF SCN. Т.e. вопрос о точке statement level read consistency для CTAS. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:11 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
SYПервый commit отпустит exclusive lockПри чём здесь это? Вы с ТС ожидаете чего-то неестественного. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:24 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
SYПервый commit отпустит exclusive lock и есть вероятность изменения таблицы до того как select зафиксирует свой AS OF SCN. Т.e. вопрос о точке statement level read consistency для CTAS. SY. я ж привел пример 21813015 если с табличкой активно работают, то LOCK TABLE ничего не дает (лишний) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 17:26 |
|
Несовпадение количества
|
|||
---|---|---|---|
#18+
StaxSYПервый commit отпустит exclusive lock и есть вероятность изменения таблицы до того как select зафиксирует свой AS OF SCN. Т.e. вопрос о точке statement level read consistency для CTAS. SY. я ж привел пример 21813015 Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 17:56 |
|
|
start [/forum/topic.php?fid=52&fpage=84&tid=1882785]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 169ms |
0 / 0 |