Обновление 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 - ОШИБКА В MERGE: ORA-12008: ошибка в пути обновления материализованного представления ORA-01555: снимок слишком старый: сегмент отката с номером 406 с именем "_SYSSMU406_3487494604$" слишком мал ORA-02063: предыдущая строка из IJSFASIEBEL

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

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

2 ответа

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

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

- Milind Kale

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

Существует полное обсуждение того, что это значит здесь:

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

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

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