|
|
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
Пытаюсь создать материальное представление с инкриментальным обновлением: Создаю логи для обновления : Код: plsql 1. 2. 3. Пытаюсь создать само представление: Код: plsql 1. 2. 3. 4. 5. 6. 7. Получаю ошибку ORA-12015: cannot create a fast refresh materialized view from a complex query SPEC_ID в PRIMARY KEY у обоих таблиц. Что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 14:45 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSD, Ты ограничения-то на запрос в фаст-рефреш вьюхе читал? там допускается только линейный запрос по одной таблице, никаких джойноф. Тебе ж и сообщение об ошибке говорит об этом. А у тебя чего в запросе записано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 14:57 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
Прошу прощения не верно указал ошибку. Выскакивает ORA-12052 Не возможна быстрая регенерация материального представления ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 14:58 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхPSD, Ты ограничения-то на запрос в фаст-рефреш вьюхе читал? там допускается только линейный запрос по одной таблице, никаких джойноф. Тебе ж и сообщение об ошибке говорит об этом. А у тебя чего в запросе записано? Можно можно подсказать где в явном виде написано что inner/left join нельзя? Специально полдня искал не нашел(может и нашел но английский подвел). Меня тыкают в https://docs.oracle.com/cd/B10501_01/server.920/a96520/mv.htm#42277 там есть пример эквивалентный INNER JOIN и говорят что руки кривые. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:07 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSD, И где в твоем коде rowid? Ты рестрикшены на матвью внимательней почитай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:14 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:17 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
Упс Увидел SYSDATE и возбудился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:18 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
Alex__kKPSD, И где в твоем коде rowid? Ты рестрикшены на матвью внимательней почитай. В таком варианте получаю туже ORA-12056 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:20 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
rowid в списке SELECT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:21 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSD, Чукча не читатель, чукча писатель (с) Ты дальше то хоть тобой приведенный пример посмотри внимательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:23 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSD, КРС, слегка попутал. Чего-то про он комит подумалось. Ну а тебе уже дали правильный ответ - rowid-Ы всех таблиц, участвуюших в запросе, должны быть представлены в селект-листе запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 15:31 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхPSD, КРС, слегка попутал. Чего-то про он комит подумалось. Ну а тебе уже дали правильный ответ - rowid-Ы всех таблиц, участвуюших в запросе, должны быть представлены в селект-листе запроса. Затупил конкретно, в место того чтобы задать простой вопрос. Конструкции вида: select <> from table1 Left join table2 on table1.pk1=table2.pk2 и select <> from table1 inner join table2 on table1.pk1=table2.pk2 inner join table3 on table3.pk1=table2.s_pk2 в принципе можно заставить работать в материальном представлении с REFRESH FAST? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 18:16 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSDДобрый Э - ЭхPSD, КРС, слегка попутал. Чего-то про он комит подумалось. Ну а тебе уже дали правильный ответ - rowid-Ы всех таблиц, участвуюших в запросе, должны быть представлены в селект-листе запроса. Затупил конкретно, в место того чтобы задать простой вопрос. Конструкции вида: select <> from table1 Left join table2 on table1.pk1=table2.pk2 и select <> from table1 inner join table2 on table1.pk1=table2.pk2 inner join table3 on table3.pk1=table2.s_pk2 в принципе можно заставить работать в материальном представлении с REFRESH FAST? Опять туплю . select <> from table1 inner join table2 on table1.pk1=table2.pk2 inner join table3 on table3.pk1=table2.s_pk2 Конечно можно заменяешь inner join запятой а условия on выносишь в where через and. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 18:27 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSD, не мучайся, сделай по документации по уже даденой ссылке: - запрос MV перепиши в native syntax , т.к. ANSI syntax не поддерживется для Fast (в 11R2 точно) - добавь rowid-ы всех таблиц запроса, как в примере - проверь запрос MV или созданное MV с помощью DBMS_MVIEW.EXPLAIN_MVIEW ( по ссылке на доку выше и/или https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_mview.htm#ARPLS67191 ) - проверить подходит ли инкрементальное обновление если изменение исходных данных задевает 75% и более объема MV - колонки rowid-ов в MV, возможно, стоит проиндексировать Если первый уровень пройден, посмотри, что из опций MV Log можно использовать для твой задачи: WITH Clause, NEW VALUES Clause, ... https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_6003.htm#SQLRF01303 Imho. - В доках не указано явно про несовместимость в 11R2 WITH PRIMARY KEY и ROWID. В режиме обновления on demand получал потери изменений MV если значения моняются циклически AA -> BB -> AA и т.д. В 12.1 исправили. Соответственно, если не 12 версия - либо WITH PRIMARY KEY илибо WITH ROWID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 02:53 |
|
||
|
Как создать CREATE MATERIALIZED VIEW REFRESH FAST в Оракл
|
|||
|---|---|---|---|
|
#18+
PSDДобрый Э - ЭхPSD, КРС, слегка попутал. Чего-то про он комит подумалось. Ну а тебе уже дали правильный ответ - rowid-Ы всех таблиц, участвуюших в запросе, должны быть представлены в селект-листе запроса. Затупил конкретно, в место того чтобы задать простой вопрос. Конструкции вида: select <> from table1 Left join table2 on table1.pk1=table2.pk2 и select <> from table1 inner join table2 on table1.pk1=table2.pk2 inner join table3 on table3.pk1=table2.s_pk2 в принципе можно заставить работать в материальном представлении с REFRESH FAST? Уже написали, что нет. Join любой не поддерживается. Перепиши на оракловый синтаксис. Для проверки возможности используй DBMS_MVIEW.explain_mview. Он покажет что мешает REFRESH FAST Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 12:17 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1884863]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 425ms |

| 0 / 0 |
