Получение списка работающих/актуальный view
Molodb
Дата: 02.10.2015 09:28:23
Всем привет!
Появилась следующая задача: в одной схеме есть порядка 200+ обычных представлений (view) и все они пока функционируют. Необходимо раз в сутки запускать запрос, который будет выдавать вьюшки, которые по каким-то причинам перестали работать (изменена или удалена исходная таблица и т.д.). Я подозреваю что это должна быть функция, которая пробегается по всем вьюшкам, селектит из них и для неработающих выводит сообщение что-то вроде "view не работает", но я что-то не пойму как это будет выглядеть в коде.
tru55
Дата: 02.10.2015 09:32:59
SELECT *
FROM dba_objects
WHERE status <> 'VALID'
kva6513
Дата: 02.10.2015 09:33:26
Molodb |
---|
выдавать вьюшки, которые по каким-то причинам перестали работать (изменена или удалена исходная таблица и т.д.). |
Если из под вьюхи вытащили таблицу - она станет INVALID-ом. Т.е., наверное, как-то так:
SELECT owner || '.' || object_name name
FROM all_objects
WHERE object_type = 'VIEW'
AND status not like 'VALID'
/
Molodb
Дата: 02.10.2015 09:50:24
О, спасибо, решение оказалось проще) Но появился еще один вопрос, для mat views, можно ли полагаться на такую же логику или нет? Есть mviews которые обновляются раз в день, нужно тоже выводить список тех, которые рефрешнулись с ошибкой. Полагаться на тоже поле в dba_objects или же на поле compile_state в dba_mviews?
tru55
Дата: 02.10.2015 10:17:53
Если какой-то объект изменяется (даже не удаляется), то Oracle сразу инвалидирует все зависимые объекты.
Зависимости:
SELECT *
FROM dba_dependencies
Понятное дело, что под изменением в данном случае имеется ввиду DDL
stax..
Дата: 02.10.2015 10:28:49
Molodb,
1) поменяли поле с number на char, вьюшка валидная, но слетает
2) поплыли планы, вью слетает
такие вью надо учитывать?
....
stax
orawish
Дата: 02.10.2015 10:53:22
Molodb,
и вообще,
там
select * from all_objects where owner in ('SYS','PUBLIC') and object_name like '%MVIEW%';
найдёте вы много полезного (и интересного .. ;)
Molodb
Дата: 02.10.2015 14:14:14
tru55,
что-то не найду в этой вьюшке никаких полезных полей
stax..,
нужны лишь те , которые при селекте из них выдают ошибку (например wrong table)
tru55
Дата: 02.10.2015 14:36:14
Molodb |
---|
что-то не найду в этой вьюшке никаких полезных полей |
Там показано, кто от кого зависит. Соответственно, можно понять, какие объекты будут инвалидированы при изменении, скажем,
TAB1
stax..
Дата: 02.10.2015 14:46:15
Molodb |
---|
tru55, что-то не найду в этой вьюшке никаких полезных полей
stax.., нужны лишь те , которые при селекте из них выдают ошибку (например wrong table) |
імхо
у них статус будет invalid (если не пользуют динамический sql)
.....
stax