ORACLE - материализованный вид - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь создать представление с использованием материала.

У меня есть 2 базы данных ORA1 и ORA2. У меня есть таблица POKUS на ORA1, и я пытаюсь создать представление на ORA2, которое меняется каждый раз, когда я изменяю и фиксирую изменения на ORA1 в таблице POKUS.

Это мой запрос. но это не работает:

CREATE MATERIALIZED VIEW  
REPLIKOVANY_POKUS2 
REFRESH FAST START WITH 
    SYSDATE NEXT SYSDATE + 1/24/60 
ENABLE QUERY REWRITE AS 
    SELECT * 
    FROM dovondrda3.POKUS@ora1.uhk.cz;

Можете ли вы помочь мне просьбы

1 Ответ

0 голосов
/ 26 марта 2020

, которые меняются каждый раз, когда я изменяю и комментирую изменения на ORA1

Ну, вы не можете этого сделать, не по ссылке на базу данных, так как обновление on commit не будет работать, когда удаленная база данных участвует. Это задокументировано где-то в руководстве по хранилищу данных; ищите его, если хотите.

Удаленная база данных:

SQL> create table a1_brisime as
  2  select * from tom
  3  where sifra = '0387779';

Table created.

SQL> alter table a1_brisime add constraint pkab primary key (sifra);

Table altered.

SQL> create materialized view log on a1_brisime;

Materialized view log created.

SQL>

Локальная база данных:

SQL> create materialized view mv_test
  2  refresh fast on commit as
  3  select sifra, naziv
  4  from a1_brisime@dbl_test
create materialized view mv_test
*
ERROR at line 1:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view


SQL>

Как я уже сказал - это не будет работать. Поэтому переключитесь на другую опцию, например on demand:

SQL> create materialized view mv_test
  2  refresh on demand as
  3  select sifra, naziv
  4  from a1_brisime@dbl_test

Materialized view created.

SQL>

или по расписанию (как вы пытались):

SQL> create materialized view mv_test
  2  refresh complete
  3  start with sysdate
  4  next sysdate + 1/24/60
  5  as
  6  select sifra, naziv
  7  from a1_brisime@dbl_test

Materialized view created.

SQL>
...