Материализованные представления - определение последнего обновления - PullRequest
20 голосов
/ 27 апреля 2011

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

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

Есть ли способ определить, обновлялось ли материализованное представление с использованием системной таблицы Oracle? Если нет, у кого-нибудь есть идеи, как бы я это сделал, не связываясь с третьей стороной?

Ответы [ 3 ]

37 голосов
/ 27 апреля 2011

Похоже, doc_180 уже ответил на это в комментариях, я не уверен, почему он не был добавлен в качестве ответа

SELECT owner, mview_name, last_refresh_date
  FROM all_mviews
 WHERE owner = <<user that owns the materialized view>>
   AND mview_name = <<name of the materialized view>>

Если у вас есть доступ к таблицам DBA, вы можете заменитьDBA_MVIEWS для ALL_MVIEWS.Это позволит вам получить доступ к информации о том, когда обновлялось каждое материализованное представление, а не только к подмножеству материализованных представлений, к которым у вас есть доступ.Конечно, это, вероятно, не та разница, которая особенно важна в этом случае.

6 голосов
/ 30 мая 2014

К сожалению, по умолчанию в оракулах используется формат даты ГГГГ-ММ-ДД. Если вам нужно время просто используйте что-то вроде этого:

SELECT owner, mview_name, to_char(LAST_REFRESH_DATE, 'yyyy-mm-dd hh24:mi:ss') last_refresh_date
FROM all_mviews
WHERE owner = 'FOO'
AND mview_name = 'MV_BAR';
0 голосов
/ 13 мая 2016

Лично я использую all_snapshots, и эта информация дополняет информацию DBA_MVIEWS или ALL_MVIEWS

select owner, name, last_refresh, error, status, refresh_mode  
from  all_snapshots 
where owner = 'owner';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...