Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Oracle > Materialized view |
Автор: KaKTyCc 26.3.2007, 13:29 | ||||||
Есть matview, которое необходимо обновлять например каждые 15 минут
для этого matview создается regresh group
и job
Но после job'a, matview становиться инвалидным объектом :-( Не понимаю, что не так ![]() |
Автор: KaKTyCc 26.3.2007, 14:30 |
если принудительно выполнить job, всё ок, сам же job в инвалид скидывает матвью.... |
Автор: DimW 26.3.2007, 15:28 |
KaKTyCc, на сколько я помню рефресш мат. представления я делал так: dbms_snapshot.refresh('mv_name'); таких проблем как у тебя не возникало. p.s. ora - 9.2.0.7 |
Автор: KaKTyCc 26.3.2007, 15:36 |
как только не крутил... заметил что инавалидом матвью становиться после job'а, если данные не изменились, и матвью остается таким, каким был. |
Автор: KaKTyCc 26.3.2007, 15:56 |
оказывается, если добавить какие то данные или удалить из таблицы участвующей в запросе, матвью становится инвалидным... как побороть? не понимаю ![]() нужна простая вещь, обновлять матвью каждые 15 минут... |
Автор: LSD 26.3.2007, 16:24 |
Создай простой MATERIALIZED VIEW и попробуй на нем, JOB будет работать или нет. |
Автор: KaKTyCc 26.3.2007, 16:35 |
Матвью обновляется, и джобом, и если при создании матвью задать интервал. Но матвью становится инвалидным, если например а таблицу ip$lots$offer добавляю запись... и после этого, как приходит время обновления, матвью не обновляется... если же я скомпилю матвью после добавления строки, оно как приходит время обновляется. |
Автор: LSD 26.3.2007, 17:01 |
1. Зачем SnapArray(2) := NULL; 2. Зачем нужно использовать и JOB и refresh group? |
Автор: KaKTyCc 26.3.2007, 17:10 |
job создается автоматически, если при определении матвью указать интервал обновления. в общем есть подозрение что это http://www.sql.ru/forum/actualthread.aspx?tid=218429#1897438 оракловая... |
Автор: KaKTyCc 27.3.2007, 09:09 |
http://jornica.blogspot.com/2007/01/unbreakable-materialized-views.html ещё. Написано что матвью автоматически скомпилиться, но у меня это не происходит... |
Автор: KaKTyCc 27.3.2007, 09:45 | ||
Частично решил проблему, добавив в job помимо обновления refresh'а компиляцию матвью
В доке написано что матвью само станет валидным при рефреше, если статус у него UNUSABLE, но у меня почему то оно становится всегда NEEDS_COMPILE.... |
Автор: KaKTyCc 28.3.2007, 08:36 |
это конечно не дело... ddl мне не нужен в job'е:-( не могу понять, почему матвью бьется так сильно.... |
Автор: KaKTyCc 28.3.2007, 09:14 |
A materialized view is automatically revalidated when it is referenced. In many cases, the materialized view will be successfully and transparently revalidated. However, if a column has been dropped in a table referenced by a materialized view or the owner of the materialized view did not have one of the query rewrite privileges and that privilege has now been granted to the owner, you should use the following statement to revalidate the materialized view: ALTER MATERIALIZED VIEW mview_name COMPILE; GRANT QUERY REWRITE TO TEST; но от этого не легче... что я делаю не так? ![]() |
Автор: LSD 28.3.2007, 14:09 |
Попробуй пользоателю от имени которого работает job, выдать права явно а не через роль. |
Автор: KaKTyCc 28.3.2007, 15:55 | ||
явно и выданы права... |