Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.036 c
4-1127118369
Quattro
2005-09-19 12:26
2005.11.20
FlashWindow


2-1130774450
Lexq
2005-10-31 19:00
2005.11.20
Отключение Alt+F4, Ctrl+Alt+del


14-1130225160
Pazitron_Brain
2005-10-25 11:26
2005.11.20
Как это сделать?


4-1125087389
eselista
2005-08-27 00:16
2005.11.20
Перенаправить на порт


14-1130518782
Ксардас
2005-10-28 20:59
2005.11.20
Какова роль общества в политике?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский