Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Materialized Views / 18 сообщений из 18, страница 1 из 1
04.02.2003, 15:46
    #32101016
Materialized Views
Есть куча таблиц, из них строится сложное представление,
как на их осное создать Materialized View , посоветовали сказали что очень поможет
...
Рейтинг: 0 / 0
04.02.2003, 15:55
    #32101023
Ekuku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
MV бывают разные..
и в Oracle 9 более продвинутые чем в Oracle 8
---
какой у Вассервер и какой тип соединения источников -таблиц?
...
Рейтинг: 0 / 0
04.02.2003, 16:01
    #32101028
Бор.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
8.1.7 Соединение - просто берется одна таблица из нее берется ID затем по этому ID ведется ряд расчетов (

select id,f_1(id),f_2(id),f_3(id)....
from tab 1
...
Рейтинг: 0 / 0
04.02.2003, 17:16
    #32101078
Ekuku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
из Oracle doc :
Oracle8i SQL Reference Release 3 (8.1.7) Part Number A85397-01
--------------------
..если вы хотите чтобы MV обновлялось непосредственно на commit
то примерно так :
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE MATERIALIZED VIEW mv1 REFRESH FAST ON COMMIT
   BUILD IMMEDIATE
   AS SELECT t.month, p.prod_name, SUM(f.sales) AS sum_sales
      FROM time t, product p, fact f
      WHERE f.curDate = t.curDate AND f.item = p.item
      GROUP BY t.month, p.prod_name;


..если вы хотите чтобы MV обновлялось по расписанию, то примерно так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE MATERIALIZED VIEW all_emps 
   PCTFREE  5  PCTUSED  60  
   TABLESPACE users 
   STORAGE INITIAL 50K NEXT 50K 
   USING INDEX STORAGE (INITIAL 25K NEXT 25K)
   REFRESH START WITH ROUND(SYSDATE +  1 ) +  11 / 24  
   NEXT NEXT_DAY(TRUNC(SYSDATE, 'MONDAY') +  15 / 24  
   AS SELECT * FROM fran.emp@dallas 
         UNION
      SELECT * FROM marco.emp@balt; 
...
Рейтинг: 0 / 0
04.02.2003, 17:28
    #32101085
Ekuku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
..хотел еще добавить,что в,принципе,MV вещь очень хорошая и полезная,но весьма капризная при создании.. ( может только у меня ? )
Наверно,только в 9.2-ом они ее стабилизировали,развили и довели до соответствия ожидаемому по описанию в доке..
...
Рейтинг: 0 / 0
04.02.2003, 17:38
    #32101092
Б.
Б.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
я пишу:

CREATE MATERIALIZED VIEW m_v1
REFRESH fast on commit
AS
SELECT
sum(n) from aaa


а оно выдает
The following error has occurred:

ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
...
Рейтинг: 0 / 0
04.02.2003, 17:50
    #32101105
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
ИМХО refresh fast on commit для снапшотов, содержащих агрегаты, не бывает, только refresh complete или, что в этом случае одно и тоже, refresh force:
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96525/e9858.htm#82578
Во-вторых, on commit возможен только для таблицы и снапшота в одной БД:
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c11schem.htm#23282
...
Рейтинг: 0 / 0
04.02.2003, 18:12
    #32101124
Б.
Б.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
А не подскажите как тогда написать в данном случае, что бы оно каждый раз обновляло при закоммиченном изменении в табл. ааа
...
Рейтинг: 0 / 0
04.02.2003, 18:35
    #32101149
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
Вот тут бы надо знать точный вид мат. представления. Поскольку у меня получилость следующее:
Код: plaintext
1.
2.
3.
4.
5.
create table test (
    test_id integer
  , value number( 9 )
  , constraint pk_test primary key (test_id)
)

Вот такой снапшот создается:
Код: plaintext
1.
2.
3.
4.
5.
6.
create materialized view mv_test
refresh complete on commit
as
select sum(value) sum_value
from test;
/

Вот такой нет (группировку добавил):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create materialized view mv_test
refresh complete on commit
as
select sum(value) sum_value
from test
group by test_id;
/

Говорит:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view

А вот такой создается (поле группировки вытащил):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create materialized view mv_test
refresh complete on commit
as
select test_id, sum(value) sum_value
from test
group by test_id;
/


Вот почему-то брезжит мысль, что ему требуется в снапшоте иметь потенциальный ключ, по которому он бодро строит уникальный индекс. Может от этого и стоит отталкиваться.

А может стоит уйти он refresh on commit на обновление по заданию, или достоверность данных настолько критична?
...
Рейтинг: 0 / 0
04.02.2003, 20:27
    #32101216
Iva
Iva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
проблема в том, что при использовании в снапшоте агрегатов или достаточно сложных функций вы получите рефреш комплит,как справедливо заметил один из предыдущих ораторов, что, как правило, неприемлемо. А не лучше ли создать табличку результатов вместо матвью, а на базовые таблицы прикрутить по триггеру, которые будут пересчитывать изменения? Query rewrit'а при этом, естественно, не будет.
...
Рейтинг: 0 / 0
05.02.2003, 11:12
    #32101407
Б.
Б.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
Честно говоря попробовал каждый из примеров и не один не проходит -пишет

ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view

(короче так ничего и не получилось)
...
Рейтинг: 0 / 0
05.02.2003, 11:17
    #32101413
Ekuku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
--> Павел, не надо отчаиваться, в системах OracleDB всегда все решается.
К сожалению, иногда только с привлечением опытных администраторов Oracle DBA. Я Вам рекомендую опубликовать полный текст Вашего SQL и добрые люди Вам помогут.. :)
...
Рейтинг: 0 / 0
05.02.2003, 11:32
    #32101428
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
Что сказать... не все тут так просто. Кстати, я, похоже, ошибался, говоря, что refresh fast для агрегатов невозможен. В Oracle8i Data Warehousing Guide эта тема специально упоминается:
http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76994/mv.htm#42151
У меня Oracle 9.2.0.1, может быть в нем что-то поменялось. А попробуй выполнить пример из документации на тему " Single-Table Aggregate Materialized Views":
http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76994/mv.htm#42194

К сожалению, я не знаю, откуда взять скрипт на создание тестовых таблиц типа FACT (может, кто подскажет?), но следующий скрипт у меня прошел без проблем:
Код: plaintext
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.
create table fact (
    store_key number( 9 )
  , time_key  number( 9 )
  , dollar_sales number( 15 ,  4 )
  , unit_sales number( 15 ,  4 )
  , constraint pk_fact primary key (store_key, time_key)
)
/

create materialized view log on fact
  with rowid (store_key, time_key, dollar_sales, unit_sales)
  including new values;
/
create materialized view sum_sales
  parallel
  build immediate
  refresh fast on commit
  as
  select f.store_key, f.time_key,
         count(*) as count_grp,
  sum(f.dollar_sales) as sum_dollar_sales,
        count(f.dollar_sales) as count_dollar_sales,
  sum(f.unit_sales) as sum_unit_sales,
        count(f.unit_sales) as count_unit_sales
  from fact f
  group by f.store_key, f.time_key;
/ 
...
Рейтинг: 0 / 0
05.02.2003, 11:33
    #32101429
Ekuku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
...хотел еще напомнить ,что прежде чем создавать собственно MV надо предварительно на таблицы-источники создать журналы MV LOG
примерно так
Код: plaintext
1.
CREATE MATERIALIZED VIEW LOG ON emp WITH PRIMARY KEY; 

Oracle8i SQL Reference
Release 3 (8.1.7)
Part Number A85397-01
...
Рейтинг: 0 / 0
05.02.2003, 12:12
    #32101465
Б.
Б.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
Спасибо ДЕНИС, ваши скрипты прошли без проблем,
вроде даже немного начал разбираться.

Только вот такой вопрос, при коммите значительно больше времени
(перестаривает представление) можно ли что бы это перестроение происходи-
ло в другой сессии (иными словами говоря) что бы пользователь не змечал это.

(Очень презнателен, пиво или коньяк с меня гарантирован)
...
Рейтинг: 0 / 0
05.02.2003, 12:29
    #32101482
new one
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
Кстати да лажа полная с такими представлениями
во посмотрел что Денис делает, все получается
а вот сам начал так вообще нефига не проходит:

create table tab_1
(id number (6) primary key ,col number(6));

create materialized view log on tab_1
with rowid (id,col)
including new values;

create materialized view tab_1_1
parallel
build immediate
refresh fast on commit
as
select f.id,count(*) as col_1,sum(f.col) as sum_1
from tab_1 f
group by f.id ;

ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view

(Може кто подскажет причину, что бы наконец то раз и навсегда разобраться
-- да и с меня Денису тоже пиво и коньяк....)
...
Рейтинг: 0 / 0
05.02.2003, 12:41
    #32101496
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
На refresh on commit вряд ли. Он ИМХО на то и рассчитан, чтобы все изменения шли в одной транзакции, которая потом либо зафиксируется, либо откатится. "В другой сессии" - это значит переходить на refresh on demand, соответственно с уменьшением достоверности.

2new one: к сожалению, я пока помочь не могу. У меня Oracle 9.2, так на нем твой скрипт прокатывает без проблем. Может, попозже из синтаксиса чего пойму, а пока для меня самого явилось открытием, что можно фаст-рефрешить снапшоты с агрегатами. Дока-рулез, чес-с-слово:)
...
Рейтинг: 0 / 0
05.02.2003, 12:45
    #32101500
new one
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Materialized Views
Спасибо Денис, буду ждать...
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Materialized Views / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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