Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизOracle9. ORA-03113 Найти похожие ветки
← →
k2 © (2005-10-11 08:11) [0]Случайно столкнулась с такой проблемой:
Небольшой запрос выполняется, возвращает мелкое количество строк(до десятка), однако если его обернуть, причем с тем же полями без группировок или ещё каких изменений получаем ORA-03113.
исходный запрос:select table1.field1 f1,table1.field2 f2,table2.field1 f3 from table1, table2 where [any_conditions]
обернутый:select f1, f2, f3 from (select table1.field1 f1,table1.field2 f2,table2.field1 f3 from table1, table2 where [any_conditions])
ошибка возникает стабильно, на разных машинах и под разными пользователями (запрос один и тот же)
клиент toad, но проверила под sql*plus - то же самое.
Подскажите где и как можно поискать источник ошибки?
← →
Reindeer Moss Eater © (2005-10-11 09:27) [1]Ищи источник [в any_conditions]
← →
Sergey13 © (2005-10-11 09:34) [2]А в трейсах ничего нет?
ORA-03113: end-of-file on communication channel
Cause: An unexpected end-of-file was processed on the communication channel. The problem could not be handled by the Net8, two task, software. This message could occur if the shadow two-task process associated with a Net8 connect has terminated abnormally, or if there is a physical failure of the interprocess communication vehicle, that is, the network or server machine went down.
Action: If this message occurs during a connection attempt, check the setup files for the appropriate Net8 driver and confirm Net8 software is correctly installed on the server. If the message occurs after a connection is well established, and the error is not due to a physical failure, check if a trace file was generated on the server at failure time. Existence of a trace file may suggest an Oracle internal error that requires the assistance of customer support.
← →
Dioman © (2005-10-11 09:37) [3]это ORA-03113 end-of-file on communication channel
← →
k2 © (2005-10-11 09:37) [4]to Reindeer Moss Eater © (11.10.05 09:27) [1]
но ведь в исходном запросе эти условия срабатывают, блок where во втором случае абсолютно такой же
← →
k2 © (2005-10-11 09:41) [5]я читала што это за ошибка :) я не могу понять где искать :(
← →
k2 © (2005-10-11 10:30) [6]Sergey13 © (11.10.05 09:34) [2]
в трейсах исходного запроса мне кажется ничего страшного нет:
recursive calls 6;consistent gets 848;execute count 8
план запроса тоже как бы не жуткий, cost=171 (choose)
если нужно могу полный запостить
← →
Desdechado © (2005-10-11 10:40) [7]это обрыв связи
ищи причину
← →
k2 © (2005-10-11 10:46) [8]to Desdechado © (11.10.05 10:40) [7]
обрыв связи возникает стабильно при одном и том же запросе и не возникает при других, в данных условиях каким образом искать и в какую сторону смотреть?
← →
Sergey13 © (2005-10-11 10:47) [9]2[6] k2 © (11.10.05 10:30)
>в трейсах исходного запроса
Не тут. При ошибках системы на сервере формируются файлы .trc там где Alert.log лежит (или рядом где то). Возможно там что-то есть. Можно и в алерте посмотреть - нет ли чего подозрительного.
← →
DenK_vrtz © (2005-10-11 10:53) [10]>k2 ©
Клиент и сервер одной версии?
← →
Курдль © (2005-10-11 10:55) [11]А в [any_conditions] не может быть длинного
... and X in (A, B, C, ... Z)
?
← →
ANB © (2005-10-11 10:56) [12]
> k2 © (11.10.05 10:46) [8]
- нарывался, но только один раз. Попробуй увеличить роллбэк сегмент и время его жизни. Полазь вообще по настройкам оракла - нехорошая ошибка.
← →
DenK_vrtz © (2005-10-11 10:59) [13]>ANB © (11.10.05 10:56) [12]
В девятке по умолчанию нет роллбэк сегментов.
← →
Reindeer Moss Eater © (2005-10-11 11:00) [14]Возникает внутренняя ошибка приводящая к тому, что рвется соединение.
В синтаксисе запроса искать ошибку бесполезно.
Патчить сервер.
Если не помогает - писать в техсапорт.
← →
k2 © (2005-10-11 11:06) [15]Sergey13 © (11.10.05 10:47) [9]
пусто, и в алерте и в трейсах
DenK_vrtz © (11.10.05 10:53) [10]
да
Курдль © (11.10.05 10:55) [11]
может, а почему тогда в исходном запросе это скушивается?
Reindeer Moss Eater © (11.10.05 11:00) [14]
сервер пропатчен
← →
Val © (2005-10-11 11:13) [16]Было у меня как-то из-за синтаксиса, помню точно. Реальный полный запрос пожалуйста. Если в пл блоке/процедуре, то весь пл блок. Если хотите , в почту.
← →
Sergey13 © (2005-10-11 11:14) [17]2[15] k2 © (11.10.05 11:06)
>пусто, и в алерте и в трейсах
Везде искала? Они вроде могут в разных местах формироваться, в зависимости от причины возникновения. Посмотри в параметрах оракла параметры, где значением является дисковый путь и название похоже на dump, trace и т.п.
Или просто по дискам поиском .trc посмотреть. ИМХО, должны быть.
← →
ANB © (2005-10-11 11:18) [18]
> DenK_vrtz © (11.10.05 10:59) [13]
> >ANB © (11.10.05 10:56) [12]
>
> В девятке по умолчанию нет роллбэк сегментов.
- а куды они делись ?
ЗЫ. Эту ошибку я на девятке и ловил. На 8 еще ни разу не нарывался.
← →
DenK_vrtz © (2005-10-11 11:25) [19]>ANB © (11.10.05 11:18) [18]
> - а куды они делись ?
они никуда не делись, только их нет по умолчанию. Если хочешь можешь сделать(добавить, настроить).
В 9-ке специальное табличное пространство этим занимается.
← →
ANB © (2005-10-11 11:28) [20]
> DenK_vrtz © (11.10.05 11:25) [19]
- ну так я про него и говорю. Для упрощения. Размер же у него менять можно ?
← →
Sergey13 © (2005-10-11 11:31) [21]2[19] DenK_vrtz © (11.10.05 11:25)
Я с 9 не работал, но что значит "нет по умолчанию"? Их и в 8 нет, за исключением 1 с именем SYSTEM в одноименном ТП. Все остальные создается отдельно.
← →
k2 © (2005-10-11 11:31) [22]Sergey13 © (11.10.05 11:14) [17]
в смысле *.trc и алерт в принципе есть, нет записей об ошибках в этот момент времени, ещё поищем как админ освободиться
Val © (11.10.05 11:13) [16]
исходный запрос
SELECT /*+ index (bd_doc )*/
Call_Value_From_Dict.get_name_subdiv(bd_doc.subdivision_id) nw,
DECODE (bd_type.bd_dct_id,50256, 1,50063, 2,50255, 3,4) tn,
nvl(bd_new.jan_quant*fact_pr.price, 0) jan_summ
FROM BD_DOCHEAD bd_doc,
BD_DOCTYPE bd_type,
BD_DOC_STRINGS bd_doc_st,
BD_DOC_STRINGS_EXTEND_NEW bd_new,
(SELECT NVL(jan_fact_price,0) price, prass_id,YEAR FROM BD_DOC_STRINGS_FACT_PRICE WHERE YEAR=2005) fact_pr
WHERE bd_doc.bd_dh_id = bd_doc_st.bd_dh_bd_dh_id
AND bd_doc.company_id = 69460
AND bd_new.YEAR_OF_USE = 2005
AND bd_type.bd_dct_id = bd_doc.document_type_id
AND bd_doc_st.PRASS_ID= fact_pr.PRASS_ID(+)
AND bd_doc_st.resource_mng_id IN (
SELECT ID
FROM MTM_RESOURCE_MANAGERS
WHERE manager_id IN (SELECT * FROM TABLE (CAST (Logistic_Units.group_res_managers("60204",",") AS boss_cxp.vtable))))
AND bd_doc.subdivision_id IN (4095)
AND bd_doc_st.bd_doc_st_id = bd_new.f_bd_doc_st_id
select nw, tn, jan_summ
from (
SELECT /*+ index (bd_doc )*/
Call_Value_From_Dict.get_name_subdiv(bd_doc.subdivision_id) nw,
DECODE (bd_type.bd_dct_id,50256, 1,50063, 2,50255, 3,4) tn,
nvl(bd_new.jan_quant*fact_pr.price, 0) jan_summ
FROM BD_DOCHEAD bd_doc,
BD_DOCTYPE bd_type,
BD_DOC_STRINGS bd_doc_st,
BD_DOC_STRINGS_EXTEND_NEW bd_new,
(SELECT NVL(jan_fact_price,0) price, prass_id,YEAR FROM BD_DOC_STRINGS_FACT_PRICE WHERE YEAR=2005) fact_pr
WHERE bd_doc.bd_dh_id = bd_doc_st.bd_dh_bd_dh_id
AND bd_doc.company_id = 69460
AND bd_new.YEAR_OF_USE = 2005
AND bd_type.bd_dct_id = bd_doc.document_type_id
AND bd_doc_st.PRASS_ID= fact_pr.PRASS_ID(+)
AND bd_doc_st.resource_mng_id IN (
SELECT ID
FROM MTM_RESOURCE_MANAGERS
WHERE manager_id IN (SELECT * FROM TABLE (CAST (Logistic_Units.group_res_managers("60204",",") AS boss_cxp.vtable))))
AND bd_doc.subdivision_id IN (4095)
AND bd_doc_st.bd_doc_st_id = bd_new.f_bd_doc_st_id)
коегде загадочности и непостижимости есть, сильно не ругайтесь-так надо :о)
← →
ANB © (2005-10-11 11:39) [23]
> k2 © (11.10.05 11:31) [22]
- попробуй во вложенном запросе убрать хинт и вызов функций из пакетов. Затем добавляй обратно по одному, пока не сломается. Имхо - проблема в хранимках.
← →
Val © (2005-10-11 11:54) [24]+ANB пробуем также
...
SELECT /*+ index (bd_doc )*/
1 nw,
2 tn,
3 jan_summ ...
пробуем также на основе исходного запроса создать обзор, и выборку из него.
← →
DenK_vrtz © (2005-10-11 13:02) [25]> Sergey13 © (11.10.05 11:31) [21]
> Их и в 8 нет, за исключением 1 с именем SYSTEM в одноименном
> ТП. Все остальные создается отдельно.
Все верно, но, если в 8-ке ручками не создать n-е количество этих самых сегментов, то ничего работать не будет, а в 9-ке об этом не надо заботиться, так как для этих целей создано специальное ТП (не помни как называется, ну не админ я :) )
← →
Seg (2005-10-11 16:12) [26]Почему бы исходный запрос не положить в ХП, или хотя бы часть запроса?
← →
ANB © (2005-10-11 16:14) [27]
> Seg (11.10.05 16:12) [26]
- для чего ?
> создано специальное ТП (не помни как называется, ну не админ
> я :) )
- этим и должен админ заниматься. Наше дело найти ошибку и попинать его.
← →
Seg (2005-10-11 16:19) [28]- для чего ?
Чтобы заработало.
← →
Sergey13 © (2005-10-11 16:30) [29]2[25] DenK_vrtz © (11.10.05 13:02)
> а в 9-ке об этом не надо заботиться, так как для этих целей создано специальное ТП
Спорить не буду, ибо не юзал, но сомневаюсь. И в 8 такое ТП создается, если ставить учебную БД при установке. При создании ручками - что укажешь, то и будет.
← →
ANB © (2005-10-11 16:30) [30]
> Seg (11.10.05 16:19) [28]
- не факт. В ХП может еще больше поломаться. Плюс в оракле не так просто написать ХП, возвращаюшую набор данных.
← →
ANB © (2005-10-11 16:31) [31]
> Все верно, но, если в 8-ке ручками не создать n-е количество
> этих самых сегментов, то ничего работать не будет
- у меня на компе 7 экземпляров ораклы восьмой развернуто. И на серваке еще штук 6. И ни на одной ничего не создавал. И все работает.
← →
Seg (2005-10-11 16:35) [32]С возвращением курсора в Оракле действительно проблемы.
Но в процедуре можно раскидать запрос по подзапросам и посмотреть, как все работает.
Например подзапрос
AND bd_doc_st.resource_mng_id IN (
SELECT ID
FROM MTM_RESOURCE_MANAGERS
WHERE manager_id IN (SELECT * FROM TABLE (CAST (Logistic_Units.group_res_managers("60204",",") AS boss_cxp.vtable))))
можно вынести в отдельную функцию, которая возвращает набор ID через запятую.
← →
Sergey13 © (2005-10-11 16:36) [33]2[31] ANB © (11.10.05 16:31)
> - у меня на компе 7 экземпляров ораклы восьмой развернуто. И на серваке еще штук 6.
Солишь их? Или коллекционер? 8-)
← →
ANB © (2005-10-11 16:43) [34]
> можно вынести в отдельную функцию, которая возвращает набор
> ID через запятую.
> <Цитата>
- напиши примерчик такой функции ?
← →
Seg (2005-10-11 16:43) [35]А эту конструкцию нельзя сделать как вызов таблицы с ограничением в общем разделе where?
(SELECT NVL(jan_fact_price,0) price, prass_id,YEAR FROM BD_DOC_STRINGS_FACT_PRICE WHERE YEAR=2005) fact_pr
← →
ANB © (2005-10-11 16:44) [36]
> Sergey13 © (11.10.05 16:36) [33]
- я программист в отделе тестирования. Производственная необходимость.
← →
ANB © (2005-10-11 16:45) [37]
> Seg (11.10.05 16:43) [35]
- нормальная конструкция, вполне рабочая. Иногда не стоит такие в WHERE загонять.
← →
Seg (2005-10-11 16:48) [38]- напиши примерчик такой функции ?
Я уже приводил пример простой функции, которая возвращает строку, разделенную через запятую в ветке про издательства и их авторов.
← →
k2 © (2005-10-12 10:31) [39]1) представление из исходного запроса, выборка из него - все работает
2) а вот хранимка использует еще некоторые, при раскручивании получился монстр и ошибка осталась :) поставим автору на вид (нет совсем обработки ошибок), пусть ищет
спасибо большое за советы и обсуждение, както в голову не пришло раскручивать в такой ситуации, процедуры достаточно не новые
to ANB © Вы мой герой :о)
← →
ANB © (2005-10-12 10:54) [40]
> k2 © (12.10.05 10:31) [39]
- я женат. :)
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.047 c