Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / MATERIALIZED VIEW REFRESH FAST ON DEMAND / 6 сообщений из 6, страница 1 из 1
04.03.2021, 12:33
    #40050611
GGguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MATERIALIZED VIEW REFRESH FAST ON DEMAND
Всем доброго дня. Уже прочитал много разных тем и статей, но так и не понял можно ли создавать матвью с 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
04.03.2021, 15:32
    #40050705
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MATERIALIZED VIEW REFRESH FAST ON DEMAND
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
04.03.2021, 16:15
    #40050746
GGguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MATERIALIZED VIEW REFRESH FAST ON DEMAND
SY,

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

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


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

SY.
...
Рейтинг: 0 / 0
04.03.2021, 16:59
    #40050772
GGguest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MATERIALIZED VIEW REFRESH FAST ON DEMAND
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
05.03.2021, 00:06
    #40050902
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MATERIALIZED VIEW REFRESH FAST ON DEMAND
Интересно, если части 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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / MATERIALIZED VIEW REFRESH FAST ON DEMAND / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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