Материализованные представления - идентификация последнего обновления

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

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

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

Ответ 1

Похоже, 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. Это позволит вам получить доступ к информации о том, когда обновлялось каждое материализованное представление, а не только подмножество материализованных представлений, к которым у вас есть доступ. Конечно, это, вероятно, не имеет особого значения в этом случае.

Ответ 2

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

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';

Ответ 3

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

select owner, name, last_refresh, error, status, refresh_mode  
from  all_snapshots 
where owner = 'owner';