Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ORA-03113 и мегаселект  [new]
Приплыли
Guest
Есть селект с использованием With
упрощенно выглядит так:
автор
with a1 (select id, f1, f2 from ... where...),
a2 (select id, f1, f2 from ... where...)
select f1, f2, sum(summa)
from
(select a1.f1, a1.f1, a2.summa from a1, a2 where a1.id=a2.id(+)
union all
select a2.f1, a2.f1, a2.summa from a1, a2 where Not Exists (Select 1 from a2 where a1.id=a2.id))
group by f1, f2

каждый из подзапросов with выполняется нормально
в том числе если заремить любой из запросов участвующих в uinon all
а весь запрос целиком отваливает сессию по ORA-03113
вопрос как бы переписать грамотно запрос без юнион или без Not Exists
или вообще без with?
почитал про эту ORA-03113 - все советуют читать алерт, но это не для меня не вариант на данный момент (
17 апр 09, 16:58    [7080493]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
так покрасивее вроде
with a1 (select id, f1, f2 from ... where...),
a2 (select id, f1, f2 from ... where...)
select f1, f2, sum(summa)
from 
(select a1.f1, a1.f1, a2.summa from a1, a2 where a1.id=a2.id(+)
union all
select a2.f1, a2.f1, a2.summa from a1, a2 where Not Exists (Select 1 from a2 where a1.id=a2.id))
group by f1, f2
17 апр 09, 17:06    [7080565]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Приплыли
select a2.f1, a2.f1, a2.summa from a1, a2 where Not Exists (Select 1 from a2 where a1.id=a2.id))
А если без опечатки?
17 апр 09, 17:28    [7080729]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
Да немного опечатался
лучше так:
select a2.f1, a2.f1, a2.summa from a2 where Not Exists (Select 1 from a1 where a1.id=a2.id))
,
но не помогает
17 апр 09, 17:35    [7080778]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Приплыли
но не помогает
Это помощь не Вам, а нам. чтобы понять, что надо селекту :)

1) А Вы пробовали MATERIALIZE или наоборот INLINE в with (обратное тому, что Оракл Вам по плану показывает)
2) То есть у Вас внутри аля-FULL OUTER JOIN? Вы его не пробовали?
17 апр 09, 17:42    [7080818]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
FULL OUTER JOIN это уже интересно.
можно ли примерчик простейшего селекта с таким фул joinom?
то есть мне надо достать все записи из первого набора с внешней привязкой ко второму,
а потом прицепить к результату записи из второго набора, которых нет по ID в первом наборе
17 апр 09, 17:49    [7080866]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
автор
1) А Вы пробовали MATERIALIZE или наоборот INLINE в with (обратное тому, что Оракл Вам по плану показывает)

По этому вопросу вообще в ступоре - не в курсе я что это такое
17 апр 09, 17:50    [7080875]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Приплыли
автор
1) А Вы пробовали MATERIALIZE или наоборот INLINE в with (обратное тому, что Оракл Вам по плану показывает)
По этому вопросу вообще в ступоре - не в курсе я что это такое
Это хинты:
with a1 (select /*+MATERIALIZE*/ id, f1, f2 from ... where...),
и аналогично.
17 апр 09, 17:52    [7080892]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Приплыли
FULL OUTER JOIN это уже интересно.
можно ли примерчик простейшего селекта с таким фул joinom?
Что-то типа
(select nvl(a1.id, a2.id),  -- и в том же духе
from a1 full outer join a2 on a1.id=a2.id
)
Хотя этот синтаксис сам по себе не самый надежный из уществующих...
17 апр 09, 17:56    [7080911]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
Посмотрел мельком про inline, решил, что речь идет просто о вложенных вьюшках
вернулся в топик и признаться решил, что это прикол насчет хинтов :)
но попробовал все-таки :)
с MATERIALIZE так же отвалилось с INLINE
пока запрос идет не отваливается уже интересно, правда не факт, что закончится когда-то,
жду в общем
17 апр 09, 17:57    [7080924]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Приплыли
Посмотрел мельком про inline, решил, что речь идет просто о вложенных вьюшках
вернулся в топик и признаться решил, что это прикол насчет хинтов :)
Почему же прикол? :) Оракл идет одним путем, и где-то натыкается вероятно на баг, соответственно нужно попробовать его послать другим путем, вдруг бажное место останется за кормой :)
17 апр 09, 17:59    [7080939]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Приплыли
упрощенно выглядит так:
Пора уже выкладывать реальный запрос. Може там и WITH не нужен.
17 апр 09, 18:01    [7080948]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
Не хинт INLINE чудесным образом помог! Урааааааааааааааа!!!!
Блин, а в чем его смысл?Мне думалось, что MATERIALIZE как-то лучше по смыслу, типа он пофиксит результаты двух набора жестко и будет с ними работать.
Запрос выкладывать нет смысла, извините конечно - ~300 строк только вызовут массу вопросов уводящих от темы :)
17 апр 09, 18:08    [7080995]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
автор
Може там и WITH не нужен

можно без with, но тогда одини и тот же запросы придется писать по два раза,
так как они оба используются в union других вариантов не знаю
17 апр 09, 18:10    [7081011]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Приплыли
Guest
Господа, скажите все-таки физическую сущность этих хинтов inline и materialize
17 апр 09, 18:53    [7081226]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Приплыли
можно без with, но тогда одини и тот же запросы придется писать по два раза,
так как они оба используются в union других вариантов не знаю
Ну как же не знаете, когда он проходит в Вашей же теме?...

Приплыли
Господа, скажите все-таки физическую сущность этих хинтов inline и materialize
А чего мешает прочитать? Основную суть можно постичь, если посмотреть план запроса.

ЗЫ: Надеюсь, что Вы понимаете, что в данном случае рекомендовалось попробовать INLINE не из соображений производительности(о которой тут речи не шло), а из соображений "ORA-03113 - все советуют читать алерт, но это не для меня не вариант на данный момент"
20 апр 09, 09:53    [7085685]     Ответить | Цитировать Сообщить модератору
 Re: ORA-03113 и мегаселект  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
ну и (топикстартеру вдогонку ;)
1) запрос таки стоило опубликовать (напр. файл прикрепить)
2) и версию сервера. без этого - слишком широка гуща, по которой надо гадать
20 апр 09, 14:31    [7087308]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить