Ошибка обновления материализованного представления Oracle с ошибкой ORA-01555

У меня есть материализованное представление, которое обновляется по запросу:

CREATE MATERIALIZED VIEW XYZ
REFRESH COMPLETE ON DEMAND
AS
SELECT * FROM ABC WHERE LAST_UPD > SYSDATE-30;

Когда я запускаю процедуру обновления, она терпит неудачу каждые два дня.

Команда обновления:

dbms_mview.refresh(list           => 'XYZ',
                       method         => 'C',
                       parallelism    => 0,
                       atomic_refresh => false);

Ошибка:

1 - ОШИБКА ПРИ ОБЪЕДИНЕНИИ: ORA-12008: ошибка в пути обновления материализованного представления ORA-01555: слишком старый моментальный снимок: номер сегмента отката 406 с именем "_SYSSMU406_3487494604 $" слишком маленький ORA-02063: предыдущая строка из IJSFASIEBEL

Я читал, что использование select * для создания материализованного представления может вызвать эту ошибку, но я отбрасывал представление и воссоздавал его много раз, обновление работает нормально в один день и дает ошибку на следующий день. В базовую таблицу изменений не вносилось.

Может ли кто-нибудь сказать мне, что означает сообщение об ошибке или что может быть причиной проблемы?


person Pratheek Ponnuru    schedule 10.09.2014    source источник


Ответы (2)


Проблема в том, что ваши сегменты отката недостаточно велики для выполняемого запроса, учитывая, что в базе данных одновременно происходят другие обновления.

Здесь подробно обсуждается, что это означает:

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:275215756923

Возможные решения:-

  • Создайте сегмент отката большего размера, чтобы во время обновления могло произойти больше изменений, не исчерпывая места для отката.
  • Создание индекса для LAST_UPD для повышения скорости запроса (если это действительно так)
  • Запуск обновления в более тихое время дня
person WW.    schedule 10.09.2014

Пратхик Поннуру,

Пожалуйста, проверьте, есть ли в таблице какие-либо LOB-объекты, проверьте их на повреждение. Если LOB повреждены, то эта ошибка возникала ... Недавно я столкнулся с такой же проблемой, я проверяю повреждение для всех lob в таблице и публикую дальнейшее расследование, обнаружив несколько поврежденных сегментов lob, которые позже я установил на blob_null ().

- Милинд Кале

person Milind M Kale    schedule 13.01.2015