Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 MATER. VIEW - обновление ON COMMIT  [new]
HOME_X
Member

Откуда:
Сообщений: 2548
Доброго дня господа !

Имею пример
drop MATERIALIZED VIEW LOG ON product_information; 
drop MATERIALIZED VIEW products_mv;
drop table product_information;

create table product_information (list_price integer, min_price integer, category_id integer, A  integer primary key);

CREATE MATERIALIZED VIEW LOG ON product_information 
   WITH ROWID, SEQUENCE (list_price, min_price, category_id), PRIMARY KEY
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW products_mv 
   REFRESH FAST ON COMMIT
   AS SELECT SUM(list_price - min_price), category_id
         FROM product_information 
         GROUP BY category_id;

insert into product_information values(1,2,3,6);
commit;
select * from product_information;
select * from products_mv;

This materialized view is eligible for fast refresh because the log defined on its master table includes both old and new values.

Вношу запись - обновления не происходит !
Подскажите где ошибаюсь пожалуйста
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
Connected as SYS
 
SQL> 
 
Materialized view log dropped
 
Materialized view dropped
 
Table dropped
 
Table created
 
Materialized view log created
 
Materialized view created
 
1 row inserted
 
Commit complete
 
                             LIST_PRICE                               MIN_PRICE                             CATEGORY_ID                                       A
--------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
                                      1                                       2                                       3                                       6
 
SUM(LIST_PRICE-MIN_PRICE)                             CATEGORY_ID
------------------------- ---------------------------------------
 
SQL> 

Заранее благодарен !
14 июл 11, 19:17    [10976141]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
14 июл 11, 19:27    [10976193]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
Maxim Demenko
Member

Откуда: Munich, Germany
Сообщений: 940
Что либо не работающее под SYS - это не обязательно баг.

Best regards

Maxim
14 июл 11, 19:40    [10976265]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
Maxim Demenko
Что либо не работающее под SYS - это не обязательно баг.

Действительно, в более поздних версиях появилась
ORA-12010: cannot create materialized view log on table owned by SYS
14 июл 11, 19:49    [10976293]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
HOME_X
Member

Откуда:
Сообщений: 2548
Connected as system
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
Connected as system
 
SQL> 
 
Materialized view log dropped
 
Materialized view dropped
 
Table dropped
 
Table created
 
Materialized view log created
 
Materialized view created
 
1 row inserted
 
Commit complete
 
                             LIST_PRICE                               MIN_PRICE                             CATEGORY_ID                                       A
--------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
                                      7                                       5                                       1                                       9
 
SUM(LIST_PRICE-MIN_PRICE)                             CATEGORY_ID
------------------------- ---------------------------------------
                        2                                       1
 

[quot Maxim Demenko]
......не работающее под SYS.....
/quot]

Забавно !!!!!
Это отдельный параметр в базе, чтобы работало под SYS ?

Заранее благодарен !
15 июл 11, 10:38    [10978113]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
HOME_X
Member

Откуда:
Сообщений: 2548
HOME_X,

И еще один момент господа
Добавляю агрегат. функцию Max() keep - получаю ошибку
drop materialized view log on A0; 
drop materialized view A1;
drop table A0;

create table A0(F1 Integer, 
                F2 Integer, 
                F3 Integer, 
                F4 Integer primary key
               );
create materialized view log on A0
  with rowid, sequence(F1,F2,F3),primary key
  including new values;

create materialized view A1 
  refresh fast on commit as
  select F3,
         Max(F2) keep(Dense_Rank last order by F1) F1,
         Sum(F1-F2) OKK
    from A0 
   group by F3;

insert into A0 values(1,2,3,6);
commit;
select * from A0;
select * from A1;

----------------------------------
Materialized view log created

create materialized view A1
refresh fast on commit as
select F3,
Max(F2) keep(Dense_Rank last order by F1) F1,
Sum(F1-F2) OKK
from A0
group by F3

ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
-----------------------------------------

Мат представления не могут работать со сложными запросами ?
15 июл 11, 14:12    [10979967]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
zhal
Member

Откуда: Киев-Харьков
Сообщений: 647
HOME_X,

Конечно есть ограничения для MV ON COMMIT:
создай таблицу
+
create table MV_CAPABILITIES_TABLE
(
  statement_id      varchar(30) ,
  mvowner           varchar(30) ,
  mvname            varchar(30) ,
  capability_name   varchar(30) ,
  possible          character(1) ,
  related_text      varchar(2000) ,
  related_num       number ,
  msgno             integer ,
  msgtxt            varchar(2000) ,
  seq               number
) ;
BEGIN
dbms_mview.explain_mview('select F3,
         Max(F2) keep(Dense_Rank last order by F1) F1,
         Sum(F1-F2) OKK
    from A0 
   group by F3');
END;
Здесь получишь причины
SELECT * FROM MV_CAPABILITIES_TABLE
15 июл 11, 14:56    [10980374]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
zhal
Здесь получишь причины


Рекомендую ещё подход, описанный здесь: http://www.sqlsnippets.com/en/topic-12884.html . Лично мне использовать эту обёртку было удобней.
15 июл 11, 15:26    [10980614]     Ответить | Цитировать Сообщить модератору
 Re: MATER. VIEW - обновление ON COMMIT  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
HOME_X
Мат представления не могут работать со сложными запросами ?


RTFM Oracle Database Data Warehousing Guide: Basic Materialized Views. Можете предварительно почитать SQL Snippets: Materialized Views, там чуток попроще.
15 июл 11, 18:37    [10981908]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить