выберите заявление дать ora-03113 на Oracle 11 - PullRequest
0 голосов
/ 20 марта 2011

Когда я запускаю следующий SQL-оператор в Oracle 11g, я получаю ora - 03113 но то же утверждение работает нормально на оракуле 10гр2 Может ли кто-нибудь помочь мне в этом вопросе

    SELECT /*+ INDEX_JOIN(b) */
           b.child_
      FROM tab1 b
START WITH b.child_ IN (
     SELECT /*+ INDEX_JOIN(c) */
            c.id
       FROM tab2 c
      WHERE c.id IN (SELECT /*+ INDEX_JOIN(d) */
                            d.id
                       FROM tab3 d
                      WHERE d.id2 = 'X'
                     UNION
                     SELECT 'X'
                       FROM DUAL))
CONNECT BY b.parent_ = PRIOR b.child_

Ответы [ 2 ]

5 голосов
/ 20 марта 2011

ORA-03113 - это одна из общих ошибок Oracle «сбой сервера». В каталоге USER_DUMP_DEST должен быть файл трассировки, содержащий диагностическую информацию. Если вам не повезло, вместо этого будет дамп ядра (в каталоге CORE_DUMP_DEST). Я говорю неудачно, потому что сложнее получить трассировку стека из дампа ядра.

Возможно, вам понадобится администратор базы данных, чтобы помочь с доступом к этим файлам, а также в интерпретации.

ORA-03113 обычно указывает на проблему с целостностью базы данных, такую ​​как повреждение блока или индекса. Поэтому вам также может понадобиться помощь администратора в решении этого вопроса.

Короче говоря, я думаю, что люди, которые проголосовали за перенос этого с ServerFault, ошибались.

0 голосов
/ 10 июля 2013

У меня была такая же проблема с запросом с подзапросом Exists, который поддерживает разбиение на страницы. Мы идентифицируем проблему, переписав подзапрос к простому, и затем пришло простое решение изменить оператор выбора подзапроса: вместо использования tablename.* мы изменили выбор только тех полей, которые нам нужны, tablename.id в наш случай. И проблема решена.

Надеюсь, это поможет.

...