Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос "умирает" при попытке вставить данные таблицу. / 25 сообщений из 65, страница 1 из 3
12.05.2017, 09:29
    #39451815
Елена Н.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Добрый, форум!

Имею запрос, сложный, тяжелый, но в итоге долгих оптимизаций выполнимый за приемлемое время. Но вот при попытке сделать INSERT INTO SELECT этот же запрос заканчивается ошибкой "ORA-01555: слишком старый снимок:...". Пробовала на другом сервере, постоянную и временную таблицу, результат тот же.

Что-то даже мысли нет, в чем может быть причина, в какую сторону копать?
...
Рейтинг: 0 / 0
12.05.2017, 09:31
    #39451816
Q.Tarantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
есть замечательный сайт google.com!
и вот что он говорит:
http://www.orafaq.com/wiki/ORA-01555
...
Рейтинг: 0 / 0
12.05.2017, 09:47
    #39451827
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
приемлемое время - это сколько дней/часов?
...
Рейтинг: 0 / 0
12.05.2017, 09:52
    #39451828
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.выполнимый за приемлемое время

Что под этим понимается? Получение всех строк или только первый фетч?


Елена Н.этот же запрос заканчивается
План при insert select совпадает с планом при просто select?

При наличии достаточного объёма TEMP и терпения, есть метод materialize'em all. Но лучше регулярно так не делать.
Если сложный тяжёлый запрос надо выполнять регулярно, то смотрите в сторону предматериализации его составляющих, матьеговью с query rewrite и подобные гадости механизмы.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
insert into ...
with "t_N" as (select /*+ materialize */ .....),
      "t_N-1" as (select /*+ materialize */ ..... from "t_N" any join some_table ...),
      ...
       t as (select /*+ materialize */ ..... from "t_0" any join last_little_dimension),
select t.* 
from t
...
Рейтинг: 0 / 0
12.05.2017, 10:05
    #39451842
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.,
имхо
как минимум 4 варианта
1) выполнить вставку при минимальной активности, напр ночью
2) еще больше "дооптимизировать" запрос
3) в старих версиях можно было фиктивными сессиями препядствовать затиранию в роллбек кольце
4) менять железо

.....
stax
...
Рейтинг: 0 / 0
12.05.2017, 10:17
    #39451853
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.,

Если запрос сложный и долгий но результат все равно куда-то пишется, можно разбить на 3-4 быстрых и писать по частям (если это позволяет запрос).

Но пока очень мало вводных данных для принятия решения как лучше помочь
...
Рейтинг: 0 / 0
12.05.2017, 10:20
    #39451855
Вадиман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
MaximaXXLразбить на 3-4 быстрых
и получить 3-4 несогласованных между собой набора данных
...
Рейтинг: 0 / 0
12.05.2017, 10:23
    #39451859
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Вадиман,

serialize, as of timestamp и прочее
...
Рейтинг: 0 / 0
12.05.2017, 10:26
    #39451861
Вадиман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Вы знаете информационную систему ТС и уверены, что эти транзакции получится сериализовать?
По одной из нескольких причин запрос падает с ora-01555 и в качестве решения вы даете совет "as of timestamp". Отлично.
...
Рейтинг: 0 / 0
12.05.2017, 10:32
    #39451871
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Вадиман,

Так мы и запроса не знаем.
Может там декартово произведение миллиардных таблиц.
...
Рейтинг: 0 / 0
12.05.2017, 10:36
    #39451876
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
ВадиманПо одной из нескольких причин запрос падает с ora-01555

Для случая - nested loop по FTA для большой таблицы в подзапросе - запросто можно словить ora-01555, при этом материализовать консистентные предварительные данные вполне себе можно без проблем.
...
Рейтинг: 0 / 0
12.05.2017, 10:44
    #39451883
Вадиман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
но мы же не знаем причину. Вдруг там просто не хватает undo.
...
Рейтинг: 0 / 0
12.05.2017, 10:48
    #39451890
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Вадиман,

Мы вообще мало что знаем ... посему и фраза "Но пока очень мало вводных данных для принятия решения как лучше помочь"

Может там 10 union all
...
Рейтинг: 0 / 0
12.05.2017, 11:31
    #39451943
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Вадиман,

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

ТС проснётся и опишет подробности, если вспомнит вообще, что писала сюда.
...
Рейтинг: 0 / 0
12.05.2017, 14:28
    #39452140
Елена Н.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Ого, сколько...
Так,
1. авторприемлемое время - это сколько дней/часов? минуты 2-7, по небольшой части данных чисто для разработки (изначально запрос работал несколько часов)
2. авторЧто под этим понимается? Получение всех строк или только первый фетч?все данные
3. авторПлан при insert select совпадает с планом при просто select?сейчас еще раз специально уточнила, одинаковый
4. автори вот что он говорит:
http://www.orafaq.com/wiki/ORA-01555
не уверена, конечно, что я точно понимаю механизм этой ошибки, не приходилось так глубоко копать, но сервера, а которых пробовала, тестовые, если изменения там и есть, то кратковременные, а проблема постоянная, не первый раз уже в нее утыкаюсь с этим же запросом, да каждый раз откладываю решение на потом
5. авторвыполнить вставку при минимальной активности, напр ночью
запуск процесса на ночь не помогает
6. авторМожет там 10 union all
всего 5 :)
7. авторМожет там декартово произведение миллиардных таблиц
таблицы большие, но в общем-то никаких сверхестественных механизмов в нем нет, большие таблицы + справочники
...
Рейтинг: 0 / 0
12.05.2017, 14:42
    #39452148
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.1. авторприемлемое время - это сколько дней/часов? минуты 2-7, по небольшой части данных чисто для разработки (изначально запрос работал несколько часов)

Код: plsql
1.
2.
CREATE TABLE temp AS SELECT ...  
INSERT INTO src SELECT * FROM temp 



И можно не разбираться в чем именно там причина ORA - 01555
...
Рейтинг: 0 / 0
12.05.2017, 15:12
    #39452172
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
ora601Елена Н.1. пропущено...
минуты 2-7, по небольшой части данных чисто для разработки (изначально запрос работал несколько часов)

Код: plsql
1.
2.
CREATE TABLE temp AS SELECT ...  
INSERT INTO src SELECT * FROM temp 




И можно не разбираться в чем именно там причина ORA - 01555


а какая разница, insert или create
імхо слетит также

проблема видать в другом

.....
stax
...
Рейтинг: 0 / 0
12.05.2017, 15:21
    #39452182
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.Ого, сколько...
Так,
1. авторприемлемое время - это сколько дней/часов? минуты 2-7, по небольшой части данных чисто для разработки (изначально запрос работал несколько часов)
5. авторвыполнить вставку при минимальной активности, напр ночью
запуск процесса на ночь не помогает


5-7 минут ето очень мало, для 1555

про ночь тоже странно

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

.....
stax
...
Рейтинг: 0 / 0
13.05.2017, 08:29
    #39452463
Nobody1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
LOB-ы используются?
...
Рейтинг: 0 / 0
13.05.2017, 08:58
    #39452469
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
мож, на тестовых серверах настройки кривые, что и 5 минут хватает для 1555?
...
Рейтинг: 0 / 0
14.05.2017, 12:35
    #39452702
Елена Н.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
авторCREATE TABLE temp AS SELECT ...
INSERT INTO src SELECT * FROM temp
это тоже не работает

авторLOB-ы используются?
лобы проверю, но по-моему нет

автормож, на тестовых серверах настройки кривые, что и 5 минут хватает для 1555?
в том то и дело, что когда запрос выполняю отдельно, он выполняется быстро
а когда пытаюсь данные куда-то вставить, он задумывается надооооолго, больше часа не ждала, оставляла на ночь, а утром привет 1555

вот что такого то в этой вставке, что она так на скорость запроса влияет?

p.s. видимо надо опять сделать паузу в трудах, может я где-то туплю... будто-то глюк какой-то
...
Рейтинг: 0 / 0
15.05.2017, 08:48
    #39452895
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.в том то и дело, что когда запрос выполняю отдельно, он выполняется быстро
а когда пытаюсь данные куда-то вставить, он задумывается надооооолго, больше часа не ждала, оставляла на ночь, а утром привет 1555

вот что такого то в этой вставке, что она так на скорость запроса влияет?

p.s. видимо надо опять сделать паузу в трудах, может я где-то туплю... будто-то глюк какой-то

паралельно ничего не вставляется?
мож банально висит из-за пк/фк

+ сравнить планы селекта и инсерта

......
stax
...
Рейтинг: 0 / 0
15.05.2017, 09:35
    #39452912
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.,

в догонку
слетает и create table as
большая вероятность того что планы select и iserta существенно разнятся
напр из-за first/all rows

......
stax
...
Рейтинг: 0 / 0
15.05.2017, 10:07
    #39452937
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
Елена Н.,

добавьте в запрос row_number и поверх запустите count(*) - тоже минуты?
...
Рейтинг: 0 / 0
15.05.2017, 10:07
    #39452939
Vint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос "умирает" при попытке вставить данные таблицу.
stax..,
когда девушка говорит про 2-7 минут надо обязательно уточнять получает ли она все данные или только первый результат. учитывая уровень знаний вполне вероятно что получение всех данных может занять и неделю, оттуда и 1555 ноги растут.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос "умирает" при попытке вставить данные таблицу. / 25 сообщений из 65, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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