Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.104 c
14-1130388039
Ega23
2005-10-27 08:40
2005.11.20
С днем рождения! 27 октября


14-1130399289
boriskb
2005-10-27 11:48
2005.11.20
Ходорковский


2-1131018738
Woolen
2005-11-03 14:52
2005.11.20
Непонятное поведение строк


2-1130782936
Dudee
2005-10-31 21:22
2005.11.20
TChart


1-1130331472
Mambo
2005-10-26 16:57
2005.11.20
Кодировка текста