powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / MATERIALIZED VIEW REFRESH FAST ON DEMAND
6 сообщений из 6, страница 1 из 1
MATERIALIZED VIEW REFRESH FAST ON DEMAND
    #40050611
GGguest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня. Уже прочитал много разных тем и статей, но так и не понял можно ли создавать матвью с fast refresh с использованием union (all). Нужно сделать матвью по следующему запросу

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create materialized view mv1
refresh fast on demand
as
select rowid, ID1,ID2,ID3
from T1@db_link1
union all
select rowid, ID1,ID2,ID3
from T2@db_link2



Ругается на ORA-12015: невозможно создать быстро регенерируемое материализованное представление из сложного запроса

В матвью логе rowid для двух таблиц настроен
...
Рейтинг: 0 / 0
MATERIALIZED VIEW REFRESH FAST ON DEMAND
    #40050705
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GGguest,

Дай ему что-то чтобы знать что из какой части UNION ALL:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
SQL> CREATE MATERIALIZED VIEW MV1
  2  REFRESH FAST
  3  ON DEMAND
  4  AS
  5     SELECT  ROWID RID,
  6             EMPNO
  7       FROM  EMP
  8    UNION ALL
  9     SELECT  ROWID RID,
 10             DEPTNO
 11       FROM  DEPT
 12  /
     FROM  DEPT
           *
ERROR at line 11:
ORA-12015: cannot create a fast refresh materialized view from a complex query


SQL> CREATE MATERIALIZED VIEW MV1
  2  REFRESH FAST
  3  ON DEMAND
  4  AS
  5     SELECT  ROWID RID,
  6             EMPNO,
  7             1 FLAG
  8       FROM  EMP
  9    UNION ALL
 10     SELECT  ROWID RID,
 11             DEPTNO,
 12             2 FLAG
 13       FROM  DEPT
 14  /

Materialized view created.

SQL>



SY.
...
Рейтинг: 0 / 0
MATERIALIZED VIEW REFRESH FAST ON DEMAND
    #40050746
GGguest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

а если таблицы находятся в разных базах, этот способ сработает?
...
Рейтинг: 0 / 0
MATERIALIZED VIEW REFRESH FAST ON DEMAND
    #40050750
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GGguest
SY,

а если таблицы находятся в разных базах, этот способ сработает?


А какая разница?

SY.
...
Рейтинг: 0 / 0
MATERIALIZED VIEW REFRESH FAST ON DEMAND
    #40050772
GGguest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

честно говоря, не знаю) Ошибка просто повторяется...

Я попробовал сделать тестовые таблицы.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
--База 1
create table EMP as 
select 1 idd from dual
;

create materialized view log on EMP
with rowid
;

--База 2
create table DEPT as 
select 1 idd from dual
;

create materialized view log on DEPT
with rowid
;


--База 3


create materialized view MV1
refresh fast 
on demand
as
select rowid rid, 
         IDD,
         1 as FLG
from EMP@db_link1
union 
select rowid rid, 
         IDD,
         2 as FLG
from DEPT@db_link2




Возможно что-то не так, но я не вижу...
...
Рейтинг: 0 / 0
MATERIALIZED VIEW REFRESH FAST ON DEMAND
    #40050902
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, если части UNION ALL из разных баз то не хавает а из одной и той-же то да:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SQL> CREATE MATERIALIZED VIEW MV1
  2  REFRESH FAST
  3  ON DEMAND
  4  WITH ROWID
  5  AS
  6     SELECT  ROWID RID,
  7             EMPNO,
  8             1 FLAG
  9       FROM  EMP@PDB1SOL12
 10    UNION ALL
 11     SELECT  ROWID RID,
 12             DEPTNO,
 13             2 FLAG
 14       FROM  DEPT@SOL11
 15  /
           2 FLAG
           *
ERROR at line 13:
ORA-12015: cannot create a fast refresh materialized view from a complex query


SQL> CREATE MATERIALIZED VIEW MV1
  2  REFRESH FAST
  3  ON DEMAND
  4  WITH ROWID
  5  AS
  6     SELECT  ROWID RID,
  7             EMPNO,
  8             1 FLAG
  9       FROM  EMP@PDB1SOL12
 10    UNION ALL
 11     SELECT  ROWID RID,
 12             DEPTNO,
 13             2 FLAG
 14       FROM  DEPT@PDB1SOL12
 15  /

Materialized view created.

SQL>



Просто создай 2 MV, воткни их в одну refresh group и делай refresh группы. Ну и создай просто view на UNION ALL двух MV.

SY.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / MATERIALIZED VIEW REFRESH FAST ON DEMAND
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]