|
|
|
Как отследить почему становятся невалидными мат. представления?
|
|||
|---|---|---|---|
|
#18+
Есть ряд таблиц по которым собраны мат. вьюшки. Запросы переписываются, работает как надо, но ночью запускается процесс загрузки и некоторые представления приобретают статус INVALID. Притом выборочно, скажем, из 5 представлений, собранных по одной таблице, отваливается одно. Не хочется создавать процедуру для их компиляции в конце процесса, но отследить что именно "портит" вьюшки не получается. Перегружается очень большое количество данных, много-много объектов. После обновления данных в этих таблицах, запускается процедура, в которую входит процесс обновления и компиляции представлений, если есть невалидные. То есть, по описанию процесса обновления данных в Системе, далее эти таблицы не трогаются и, соответственно, вьюшки не должны изменяться. Подскажите пожалуйста, что еще можно посмотреть, кроме загрузки данных в таблицы-источники? Может ли рекомпиляция DIMENSION (без изменения структуры), уровни которых входят в параметры группировки мат. представлений, сделать мат. представление невалидным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 10:54 |
|
||
|
Как отследить почему становятся невалидными мат. представления?
|
|||
|---|---|---|---|
|
#18+
Opus MagnumМожет ли рекомпиляция DIMENSION (без изменения структуры), уровни которых входят в параметры группировки мат. представлений, сделать мат. представление невалидным? Да может. Также есть забавные баги при которых любой DML на объект по которому строится MV приводит к её инвалидации. Укажите версию субд, использыемые опции и если есть специфичные патчи, то их тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 11:26 |
|
||
|
Как отследить почему становятся невалидными мат. представления?
|
|||
|---|---|---|---|
|
#18+
env, EE 11.2.0.3.0 - 64 опции Partitioning Objects Advanced replication Bit-mapped indexes Connection multiplexing Connection pooling Database queuing Incremental backup and recovery Instead-of triggers Parallel backup and recovery Parallel execution Parallel load Point-in-time tablespace recovery Fine-grained access control Proxy authentication/authorization Change Data Capture Plan Stability Online Index Build Coalesce Index Managed Standby Materialized view rewrite Database resource manager Spatial Export transportable tablespaces Transparent Application Failover Fast-Start Fault Recovery Sample Scan Duplexed backups Java OLAP Window Functions Block Media Recovery Fine-grained Auditing Application Role Enterprise User Security Oracle Data Guard OLAP Basic Compression Join index Trial Recovery Data Mining Online Redefinition Streams Capture File Mapping Block Change Tracking Flashback Table Flashback Database Transparent Data Encryption Backup Encryption Unused Block Compression Result Cache SQL Plan Management SecureFiles Encryption Real Application Testing Flashback Data Archive DICOM Active Data Guard Server Flash Cache Advanced Compression XStream Deferred Segment Creation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 11:38 |
|
||
|
Как отследить почему становятся невалидными мат. представления?
|
|||
|---|---|---|---|
|
#18+
Opus Magnum, Сможете сделать тестовый образец вашей структуры мат вью? В таком ключе: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Желательно, чтобы на образце было понятно взаимосвязь ваших объектов и какие операции по ним проходят. (заодно может и сами что найдёте, пока делаете образец) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 11:53 |
|
||
|
Как отследить почему становятся невалидными мат. представления?
|
|||
|---|---|---|---|
|
#18+
Структура таблиц упрощена Типичный пример, лишние поля убраны Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2016, 12:25 |
|
||
|
Как отследить почему становятся невалидными мат. представления?
|
|||
|---|---|---|---|
|
#18+
Проблему решили "топором": собрали процедурку, которая компилит невалидные представления после окончания загрузки. Но вот вопросик вдогонку, чтобы тем не плодить: Есть DIMENSION, есть мат. вьюшка, есть исходная таблица. В исходной таблице используется первый уровень в дименшне. В мат. вьюшке используется второй уровень в дименшне. В запросе используется третий уровень дименшна. Запрос не переписывается, указывая ошибку QSM-01102. Констрейны (RELY DISABLE) и (NOT NULL) на нужных полях есть. Дименшн валиден. Так и должно быть, что при аггрегации мат. вью на уроень ниже, чем в запросе, мат. вью не используется, при этом, если переделать это мат. вью на первый уровень (как в таблице), то все переписывается корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 14:26 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1886875]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 428ms |

| 0 / 0 |
