source

구체화된 보기 - 마지막 새로 고침 확인

bestscript 2023. 7. 19. 22:35

구체화된 보기 - 마지막 새로 고침 확인

저는 현재 일련의 견해와 구체화된 견해에 접근하고 있습니다.구체화된 내용은 구체화의 빈도와 성공에 대한 정보를 거의 제공하지 않는 제3자에 의해 유지됩니다.최근에는 구체화된 보기를 새로 고치는 데 실패하여 잘못된/지연된 데이터가 포함된 보고서를 다수 발송했습니다.

현재 저는 트랜잭션 시스템 내에서 최신 업데이트가 언제 발생했는지 확인하기 위해 사용하고자 하는 구체화된 각 항목에 대해 문의하고 있습니다. 업데이트되지 않은 경우 나머지 코드는 실행되지 않습니다. 하지만 이렇게 많은 노력이 낭비되고 때로는 잘못된 가정으로 이어질 수 있습니다(구체화된 보기가 새로 고쳐졌을 수 있습니다.그러나 추가 트랜잭션이 수행되지 않았습니다. 따라서 나머지 코드는 실행되지 않습니다.) 그리고 저는 다른 방법을 선호합니다.

Oracle 시스템 테이블을 사용하여 구체화된 보기를 새로 고쳤는지 확인할 수 있는 방법이 있습니까?그렇지 않다면 제가 제3자에게 연락하지 않고 어떻게 이 일을 할 수 있는지 아는 사람이 있습니까?

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이렇게 하면 액세스 권한이 있는 일부 구체화된 보기가 아니라 모든 구체화된 보기가 새로 고쳐졌을 때에 대한 정보에 액세스할 수 있습니다.물론, 이 경우에 특별히 중요한 차이는 아닐 것입니다.

안타깝게도 Oracle 기본 날짜 형식은 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';

개인적으로 all_snapshot을 사용하며, 이 정보는 DBA_MVIEWS 또는 ALL_MVIEWS의 정보를 보완합니다.

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

언급URL : https://stackoverflow.com/questions/5798894/materialized-views-identifying-the-last-refresh