Oracle 11g - быстрое обновление для материализованного представления с помощью JOIN - PullRequest
1 голос
/ 30 сентября 2019

РЕДАКТИРОВАТЬ: я решил свою проблему, изменив JOINs не в формате ANSI ... но я все еще хочу знать, как заставить FAST REFRESH работать с Материализованными представлениями, построенными на запросах, содержащих JOIN, если это возможно.

в Oracle 11g кажется, что я не могу БЫСТРО ОБНОВИТЬ материализованные представления. Для выполнения некоторых тестов я создал следующие две таблицы:

CREATE TABLE test_1
(n   NUMBER NOT NULL,
 v   VARCHAR2 (1),
 d   DATE DEFAULT SYSDATE NOT NULL);

CREATE UNIQUE INDEX t_1_pk ON test_1 (n);

ALTER TABLE test_1 ADD (
  CONSTRAINT t_1_pk
  PRIMARY KEY (n)
  USING INDEX t_1_pk
  ENABLE VALIDATE);

CREATE MATERIALIZED VIEW LOG ON test_1 WITH ROWID, PRIMARY KEY;

и

CREATE TABLE test_2
(n    NUMBER NOT NULL,
 n1   NUMBER,
 v    VARCHAR2 (1),
 d    DATE DEFAULT SYSDATE NOT NULL);

CREATE UNIQUE INDEX t_2_pk ON test_2 (n);

ALTER TABLE test_2 ADD (
  CONSTRAINT t_2_pk
  PRIMARY KEY (n)
  USING INDEX t_2_pk
  ENABLE VALIDATE,
  CONSTRAINT t_2_fk
  FOREIGN KEY (n1)
  REFERENCING test_1 (n));

CREATE MATERIALIZED VIEW LOG ON test_2 WITH ROWID, PRIMARY KEY;

, каждая из которых заполнена случайными данными. Затем я попытался создать простое материализованное представление:

CREATE MATERIALIZED VIEW test_mv
   BUILD IMMEDIATE
   REFRESH FAST ON DEMAND AS
   SELECT t1.ROWID rid1,
          t2.ROWID rid2,
          t1.n n1,
          t1.v v1,
          t2.n n2,
          t2.v v2
     FROM test_1 t1 JOIN test_2 t2 ON t1.n = t2.n1;

, но получил следующую ошибку:

ORA-12015: cannot create a fast refresh materialized view from a complex query

Удаление JOIN (т. Е. Выбор только из одной базовой таблицы). возможность построить MView. Я попытался найти какой-нибудь системный параметр для проверки, но это кажется только проблемой статического запроса. Странно то, что в моем запросе нет недопустимого выражения (я проверил этот вопрос , эту статью и многие другие сайты и публикации документации). Кроме того, я долгое время работал с Oracle 12c, и у меня никогда не было проблем с созданием материализованных представлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...