|
|
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
Есть куча таблиц, из них строится сложное представление, как на их осное создать Materialized View , посоветовали сказали что очень поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 15:46 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
MV бывают разные.. и в Oracle 9 более продвинутые чем в Oracle 8 --- какой у Вассервер и какой тип соединения источников -таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 15:55 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
8.1.7 Соединение - просто берется одна таблица из нее берется ID затем по этому ID ведется ряд расчетов ( select id,f_1(id),f_2(id),f_3(id).... from tab 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 16:01 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
из Oracle doc : Oracle8i SQL Reference Release 3 (8.1.7) Part Number A85397-01 -------------------- ..если вы хотите чтобы MV обновлялось непосредственно на commit то примерно так : Код: plaintext 1. 2. 3. 4. 5. 6. ..если вы хотите чтобы MV обновлялось по расписанию, то примерно так : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 17:16 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
..хотел еще добавить,что в,принципе,MV вещь очень хорошая и полезная,но весьма капризная при создании.. ( может только у меня ? ) Наверно,только в 9.2-ом они ее стабилизировали,развили и довели до соответствия ожидаемому по описанию в доке.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 17:28 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
я пишу: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 17:38 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
ИМХО 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 17:50 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
А не подскажите как тогда написать в данном случае, что бы оно каждый раз обновляло при закоммиченном изменении в табл. ааа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 18:12 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
Вот тут бы надо знать точный вид мат. представления. Поскольку у меня получилость следующее: Код: plaintext 1. 2. 3. 4. 5. Вот такой снапшот создается: Код: plaintext 1. 2. 3. 4. 5. 6. Вот такой нет (группировку добавил): Код: plaintext 1. 2. 3. 4. 5. 6. 7. Говорит: ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view А вот такой создается (поле группировки вытащил): Код: plaintext 1. 2. 3. 4. 5. 6. 7. Вот почему-то брезжит мысль, что ему требуется в снапшоте иметь потенциальный ключ, по которому он бодро строит уникальный индекс. Может от этого и стоит отталкиваться. А может стоит уйти он refresh on commit на обновление по заданию, или достоверность данных настолько критична? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 18:35 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
проблема в том, что при использовании в снапшоте агрегатов или достаточно сложных функций вы получите рефреш комплит,как справедливо заметил один из предыдущих ораторов, что, как правило, неприемлемо. А не лучше ли создать табличку результатов вместо матвью, а на базовые таблицы прикрутить по триггеру, которые будут пересчитывать изменения? Query rewrit'а при этом, естественно, не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2003, 20:27 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
Честно говоря попробовал каждый из примеров и не один не проходит -пишет ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view (короче так ничего и не получилось) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 11:12 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
--> Павел, не надо отчаиваться, в системах OracleDB всегда все решается. К сожалению, иногда только с привлечением опытных администраторов Oracle DBA. Я Вам рекомендую опубликовать полный текст Вашего SQL и добрые люди Вам помогут.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 11:17 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
Что сказать... не все тут так просто. Кстати, я, похоже, ошибался, говоря, что 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 11:32 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
...хотел еще напомнить ,что прежде чем создавать собственно MV надо предварительно на таблицы-источники создать журналы MV LOG примерно так Код: plaintext 1. Oracle8i SQL Reference Release 3 (8.1.7) Part Number A85397-01 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 11:33 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
Спасибо ДЕНИС, ваши скрипты прошли без проблем, вроде даже немного начал разбираться. Только вот такой вопрос, при коммите значительно больше времени (перестаривает представление) можно ли что бы это перестроение происходи- ло в другой сессии (иными словами говоря) что бы пользователь не змечал это. (Очень презнателен, пиво или коньяк с меня гарантирован) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 12:12 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
Кстати да лажа полная с такими представлениями во посмотрел что Денис делает, все получается а вот сам начал так вообще нефига не проходит: 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 (Може кто подскажет причину, что бы наконец то раз и навсегда разобраться -- да и с меня Денису тоже пиво и коньяк....) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 12:29 |
|
||
|
Materialized Views
|
|||
|---|---|---|---|
|
#18+
На refresh on commit вряд ли. Он ИМХО на то и рассчитан, чтобы все изменения шли в одной транзакции, которая потом либо зафиксируется, либо откатится. "В другой сессии" - это значит переходить на refresh on demand, соответственно с уменьшением достоверности. 2new one: к сожалению, я пока помочь не могу. У меня Oracle 9.2, так на нем твой скрипт прокатывает без проблем. Может, попозже из синтаксиса чего пойму, а пока для меня самого явилось открытием, что можно фаст-рефрешить снапшоты с агрегатами. Дока-рулез, чес-с-слово:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2003, 12:41 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2813&tid=1991932]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
17ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 274ms |

| 0 / 0 |
