Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
Люди, как создать updatable mat. view и в where clause включить сравнение с sysdate?
вот так не работает:
create materialized view test_mv for update as
  select * from goods@orcl where trunc(sysdate) - trunc(created) < 40;
ругается на ora-12013. как быть?
24 сен 07, 14:38    [4706504]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
и как вообще быть, если надо сравнивать даты в мат. представлениях, потому что такой вот запрос тоже не работает:
create materialized view test_mv for update as
  select * from orders@orcl o where o.created > (select created from cashes_close@orcl where rownum = 1);
24 сен 07, 16:04    [4707230]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
народ, ну как быть с датами?!
24 сен 07, 18:28    [4708318]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
ERROR MESSAGE
Member

Откуда: Москва
Сообщений: 376
ORA-12013 updatable materialized views must be simple enough to do fast refresh
Cause: The updatable materialized view query contained a join, subquery,
union, connect by, order by, or group by clause.
Action: Make the materialized view simpler. If a join is really needed, make
multiple simple materialized views then put a view on top of them.

Сделать так, чтобы materialized view было simple enough чтобы делать fast refresh

так попробовать
where created >= TO_CHAR('01.01.2007',;DD.MM.YYYY')

Смотреть фастрефрешность с помощью DBMS_MVIEW.EXPLAIN_MVIEW

Доку почитать
24 сен 07, 19:06    [4708437]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
krot-s
Люди, как создать updatable mat. view и в where clause включить сравнение с sysdate?
...where trunc(sysdate) - trunc(created) < 40;

А как Вы вообще представляете себе такое mat. view?
Оно должно каждую секунду самостоятельно перестраиваться или где?
24 сен 07, 19:08    [4708441]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
TiG
Member

Откуда:
Сообщений: 780
krot-s
и как вообще быть, если надо сравнивать даты в мат. представлениях, потому что такой вот запрос тоже не работает:
create materialized view test_mv for update as
  select * from orders@orcl o where o.created > (select created from cashes_close@orcl where rownum = 1);

Updatable мат.вью должно допускать fast refresh - т.е. нельзя rownum использовать. max(created) здесь тоже не поможет. Т.е. надо либо контролировать (программно триггером например), чтобы в этой таблице была только одна строка, либо помечать нужную строку (но только одну) и отбирать только ее (where actual = 1), либо использовать предложенный выше способ с зашитым литералом.
24 сен 07, 19:22    [4708470]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
kosour
Member

Откуда:
Сообщений: 236
krot-s
Люди, как создать updatable mat. view и в where clause включить сравнение с sysdate?
вот так не работает:
create materialized view test_mv for update as
  select * from goods@orcl where trunc(sysdate) - trunc(created) < 40;
ругается на ora-12013. как быть?


Создать табличку с одной строкой типа Date,
Каждую полночь ее рефрешить текущей датой и потом рефрешить мат.вьюшку.
24 сен 07, 22:12    [4708806]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
kosour
krot-s
Люди, как создать updatable mat. view и в where clause включить сравнение с sysdate?
вот так не работает:
create materialized view test_mv for update as
  select * from goods@orcl where trunc(sysdate) - trunc(created) < 40;
ругается на ora-12013. как быть?


Создать табличку с одной строкой типа Date,
Каждую полночь ее рефрешить текущей датой и потом рефрешить мат.вьюшку.


не получается.
при селекте вида
select * from orders@orcl o where o.created > (select x from x@orcl)
где x - таблица с одной строкой и колонкой x типа Date все равно ругается на то что вьюв complex.

Еще пара вопросов:
1. Почему row-level триггер, повешаный на update вьюва выполняется два раза, хотя в нем присутствует
IF DBMS_REPUTIL.FROM_REMOTE() = FALSE then
?
Или это только в случае multi-master replication без мат. вьювов работает?
2. Если мне подходит complete refresh вьюва, я все равно не могу сделать его updatable ?
24 сен 07, 22:56    [4708876]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
Разъясните, пожалуйста, пару вопросов, кто в курс:
1. Почему row-level триггер, повешаный на update вьюва выполняется два раза, хотя в нем присутствует
IF DBMS_REPUTIL.FROM_REMOTE() = FALSE then
?

Или это только в случае multi-master replication без мат. вьювов работает?

2. Если мне подходит complete refresh вьюва, я все равно не могу сделать его updatable ?

3. Как посмотреть подробности ошибки?
Вот так я смотрю сейчас:
SELECT /*+ ORDERED */
C.CALLNO,
C.DEFERRED_TRAN_ID,
C.PACKAGENAME,
C.PROCNAME, E.ORIGIN_TRAN_DB
FROM DEFERROR E, DEFCALL C
WHERE C.DEFERRED_TRAN_ID = E.DEFERRED_TRAN_ID
AND C.CALLNO = E.CALLNO
ORDER BY E.START_TIME;

select * from DEFerror;

А как увидеть данные в транзакции, которые приводят к ошибке?
25 сен 07, 12:34    [4710886]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
ERROR MESSAGE
Member

Откуда: Москва
Сообщений: 376
krot-s
2. Если мне подходит complete refresh вьюва, я все равно не могу сделать его updatable ?

Етот и другие все вопросы от непонимания того, что такое UPDATABLE SNAPSHOT (Mat. VIEW)
Доку читай
Ведь не читал же, сознавайся )))
25 сен 07, 13:59    [4711630]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
ERROR MESSAGE
krot-s
2. Если мне подходит complete refresh вьюва, я все равно не могу сделать его updatable ?

Етот и другие все вопросы от непонимания того, что такое UPDATABLE SNAPSHOT (Mat. VIEW)
Доку читай
Ведь не читал же, сознавайся )))


читал. правда всю от корочки до корочки не осилил :) время сильно поджимает... прога уже работает, синхронизация сделана вручную через промежуточную firebird базу, юзеры стонут и плачут от немеряных глюков и тормозов... так что надо очень срочно.
25 сен 07, 14:13    [4711764]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
ERROR MESSAGE
Member

Откуда: Москва
Сообщений: 376
krot-s
так что надо очень срочно.

Тогды читаем вместе:
Oracle Database. Advanced Replication

Updatable Materialized Views
=====================
You can make a materialized view updatable during creation by including the FOR
UPDATE clause or enabling the equivalent option in the Replication Management tool.
For changes made to an updatable materialized view to be pushed back to the master
during refresh, the updatable materialized view must belong to a materialized view
group.
Updatable materialized views enable you to decrease the load on master sites because
users can make changes to the data at the materialized view site. The following is an
example of an updatable materialized view:
CREATE MATERIALIZED VIEW hr.departments FOR UPDATE AS
SELECT * FROM hr.departments@orc1.world;
The following statement creates a materialized view group:
BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
      gname => 'hr_repg',
      master => 'orc1.world',
      propagation_mode => 'ASYNCHRONOUS');
END;
/
The following statement adds the hr.departments materialized view to the
materialized view group, making the materialized view updatable:
BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'departments',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

You can also use the Replication Management tool to create a materialized view group
and add a materialized view to it.
In a single master site environment that has updatable materialized views, quiesce is
not required when you perform administration operations on the master site if you:
 Propagate all of the deferred transactions at the databases containing updatable
materialized views before you perform the administration operations to the
master group.
 Do not allow any database manipulation language (DML) changes on the
updatable materialized views until you have finished the administration operation
on the master site and regenerated replication support for the materialized view.
If you do not perform these actions, then quiesce the master group before you perform
the administration operations on it.

Note:
 Do not use column aliases when you are creating an updatable
materialized view. Column aliases cause an error when you
attempt to add the materialized view to a materialized view
group using the CREATE_MVIEW_REPOBJECT procedure.
 An updatable materialized view based on a master table or
master materialized view that has defined column default
values does not automatically use the master's default values.
 A DELETE CASCADE constraint used with an updatable
materialized view must be deferrable.
25 сен 07, 14:24    [4711869]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
ERROR MESSAGE

...

это я читал. тут ничего не сказано о том, что вьюв должен поддерживать fast refresh!
Я понимаю fast refresh так - при обновлении вьюва сначала на master отправляются все deferred транзакции, потом читаются транзакции из лога этого вьюва на мастере.
complete refresh - полное перестроение вьюва с мастра. А можно ли сначала отправить deferrend транзакции, а потом после их коммита на мастере перестроить вьюв?
Вообще я нигде в доке не нашел чтобы было написано, что updatable mat. view должен обязательно поддерживать fast refresh. Что-то я где-то кажется не доганяю...
25 сен 07, 14:41    [4712019]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
ERROR MESSAGE
Member

Откуда: Москва
Сообщений: 376
Oracle Database. Advanced Replication
Updatable materialized views have the following properties.

 They are always based on a single table, although multiple tables can be
referenced in a subquery.

 They can be incrementally (or fast) refreshed.

 Oracle propagates the changes made to an updatable materialized view to the
materialized view's remote master table or master materialized view. The updates
to the master then cascade to all other replication sites.
25 сен 07, 15:39    [4712539]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
ERROR MESSAGE
Oracle Database. Advanced Replication
Updatable materialized views have the following properties.

 They are always based on a single table, although multiple tables can be
referenced in a subquery.

 They can be incrementally (or fast) refreshed.

 Oracle propagates the changes made to an updatable materialized view to the
materialized view's remote master table or master materialized view. The updates
to the master then cascade to all other replication sites.


спасибо! а как посмотреть подробности ошибки на мастере? Например если невозможно обновить строку, потому что она была удалена, то я хотел бы видеть значение primary key обновляемой?
25 сен 07, 15:45    [4712574]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
krot-s
Member

Откуда: Одесса
Сообщений: 513
уважаемые гуру, неужели никто, из здесь присутствующих, не разбирался с репликаций? или я неправильно задаю вопросы?
25 сен 07, 17:35    [4713483]     Ответить | Цитировать Сообщить модератору
 Re: updatable materialized view и сравнение с sysdate  [new]
ERROR MESSAGE
Member

Откуда: Москва
Сообщений: 376
krot-s
а как посмотреть подробности ошибки на мастере? Например если невозможно обновить строку, потому что она была удалена, то я хотел бы видеть значение primary key обновляемой?

В том же мануале "Conflict Resolution Concepts and Architecture" заштудировал?
25 сен 07, 19:58    [4714229]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить