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

Откуда: Омск
Сообщений: 141
Делаю snapshot на двух таблицах, завязанных через PK:
-- tables
create table a_test_1
(
  id    number(10),
  name  varchar2(20)
);

alter table a_test_1 add (
  constraint a_test_1_pk primary key (id));

create   table a_test_2
(
  id    number(10),
  name  varchar2(20)
);

alter table a_test_2 add (
  constraint a_test_2_pk primary key (id));
-- logs
create materialized view log on a_test_1
logging
with  primary key
excluding new values;

create materialized view log on a_test_2
logging
with  primary key
excluding new values;
-- mview
create materialized view a_mv_test
nocache
noparallel
refresh fast
  with primary key
 using default local rollback segment
disable query rewrite as
select t1.id
  from a_test_1 t1
      ,a_test_2 t2
 where t1.id = t2.id
В результате на последней операции получаю ошибку: ORA-12052: cannot fast refresh materialized view A_MV_TEST.
Растолкуйте темному: что не так?
Oracle 9.0.1.0.1
17 ноя 06, 11:09    [3413694]     Ответить | Цитировать Сообщить модератору
 Re: простейший snapshot  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17089

>что не так?
>Oracle 9.0.1.0.1
оччень хороший вопрос.. заключает себя ответ целиком..


Posted via ActualForum NNTP Server 1.3

17 ноя 06, 11:29    [3413927]     Ответить | Цитировать Сообщить модератору
 Re: простейший snapshot  [new]
UDW
Member

Откуда: Самара
Сообщений: 1096
Oracle9i
SQL Reference
Release 2 (9.2)
October 2002
Part No. A96540-02
EXCLUDING Specify EXCLUDING to disable the recording of new values in the log.
This is the default. You can use this clause to avoid the overhead of recording new
values. However, do not use this clause if you have a fast-refreshable single-table
materialized aggregate view defined on this table.
17 ноя 06, 11:53    [3414173]     Ответить | Цитировать Сообщить модератору
 Re: простейший snapshot  [new]
JustVas
Member

Откуда: Омск
Сообщений: 141
UDW
Oracle9i
SQL Reference
Release 2 (9.2)
October 2002
Part No. A96540-02
EXCLUDING Specify EXCLUDING to disable the recording of new values in the log.
This is the default. You can use this clause to avoid the overhead of recording new
values. However, do not use this clause if you have a fast-refreshable single-table
materialized aggregate view defined on this table.

create materialized view log on a_test_1
logging
with  primary key
including new values;
Не помогает, ошибка та же, правда версия 9.0.1.0.1. По совету ScareCrow - это первое, что надо пофиксить - буду пробовать
17 ноя 06, 12:02    [3414238]     Ответить | Цитировать Сообщить модератору
 Re: простейший snapshot  [new]
JustVas
Member

Откуда: Омск
Сообщений: 141
Попробовал то же на 9.2.0.1 с include / exclude new values. Результат тот же :( HELP!!!
17 ноя 06, 13:08    [3414842]     Ответить | Цитировать Сообщить модератору
 Re: простейший snapshot  [new]
Maxim Demenko
Member

Откуда: Munich, Germany
Сообщений: 940
Вообще то эта проблема рещается путём просмотра документации.
Но если времени нет, то Oracle тоже довольно красноречив:

scott@ORA102>@?/rdbms/admin/utlxmv

Table created.

scott@ORA102> create table a_test_1
  2  (
  3    id       number(10),
  4    name     varchar2(20)
  5  );

Table created.

scott@ORA102>
scott@ORA102> alter table a_test_1 add (
  2    constraint a_test_1_pk primary key (id));

Table altered.

scott@ORA102>
scott@ORA102> create     table a_test_2
  2  (
  3    id       number(10),
  4    name     varchar2(20)
  5  );

Table created.

scott@ORA102>
scott@ORA102> alter table a_test_2 add (
  2    constraint a_test_2_pk primary key (id));

Table altered.

scott@ORA102> -- logs
scott@ORA102> create materialized view log on a_test_1
  2  logging
  3  with  primary key
  4  excluding new values;

Materialized view log created.

scott@ORA102>
scott@ORA102> create materialized view log on a_test_2
  2  logging
  3  with  primary key
  4  excluding new values;

Materialized view log created.

scott@ORA102> -- mview
scott@ORA102> create materialized view a_mv_test
  2  nocache
  3  noparallel
  4  refresh fast
  5    with primary key
  6   using default local rollback segment
  7  disable query rewrite as
  8  select t1.id
  9    from a_test_1 t1
 10        ,a_test_2 t2
 11   where t1.id = t2.ID;
  from a_test_1 t1
       *
ERROR at line 9:
ORA-12052: cannot fast refresh materialized view SCOTT.A_MV_TEST


scott@ORA102>
scott@ORA102> BEGIN
  2  dbms_mview.explain_mview('create materialized view a_mv_test
  3  nocache
  4  noparallel
  5  refresh fast
  6    with primary key
  7   using default local rollback segment
  8  disable query rewrite as
  9  select t1.id
 10    from a_test_1 t1
 11        ,a_test_2 t2
 12   where t1.id = t2.ID');
 13  END;
 14  /

PL/SQL procedure successfully completed.

scott@ORA102> select
  2  CAPABILITY_NAME,MSGTXT
  3  from mv_capabilities_table t WHERE capability_name LIKE 'REFRESH_FAST%';

CAPABILITY_NAME
------------------------------
MSGTXT
-----------------------------------------------------------------------------------------------------------------------------
REFRESH_FAST


REFRESH_FAST_AFTER_INSERT
the SELECT list does not have the rowids of all the detail tables

REFRESH_FAST_AFTER_INSERT
mv log must have ROWID

REFRESH_FAST_AFTER_INSERT
mv log must have ROWID

REFRESH_FAST_AFTER_ONETAB_DML
see the reason why REFRESH_FAST_AFTER_INSERT is disabled

REFRESH_FAST_AFTER_ANY_DML
see the reason why REFRESH_FAST_AFTER_ONETAB_DML is disabled

REFRESH_FAST_PCT
PCT is not possible on any of the detail tables in the materialized view


Best regards
17 ноя 06, 13:40    [3415107]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить