다음과 같은 구체화 된보기가 있습니다. -Oracle - DBMS_MVIEW.REFRESH를 사용하여 'REFRESH FORCE ON DEMAND'뷰를 새로 고칠 때 어떤 일이 발생합니까?
CREATE MATERIALIZED VIEW TESTRESULT
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS
SELECT...
FROM...
WHERE...
이 구체화 된보기에는 보조적으로 지원되는보기 로그가 없습니다. 위의 절에서 볼 수 있듯이이 MV에는 "ON DEMAND"가 지정되어 있으며 Oracle 설명서에 따르면
"[ON DEMAND]는 에서 요청시 구체화 된 보기가 새로 고쳐질 것임을 나타냅니다 세 DBMS_MVIEW 새로 고침 절차 중. "
DBMS_MVIEW.REFRESH ('TESTRESULT')를 호출 할 때 발생하는 것은 무엇입니까? 수동으로 각 레코드가 업데이트되었는지 확인하고 있습니까?
Oracle 버전 : 10g
+1 @Justin .. 또한 'NOLOGGING'을 사용하여 MVIEW를 만든 경우 어떻게됩니까? 내가 작성한 MVIEW는 UNDOTBS가 작아서 오류가 계속 발생합니다. 'ATOMIC_REFRESH'가 도움이됩니까? – Guru
@ 전문가 - 올바르게 이해하면 ORA-01555 오류가 발생합니다. 그렇습니까? 이는 쿼리하는 테이블이 변경되고 새로 고침이 시작된 시점의 데이터 일관성있는 뷰를 생성 할 수 없다는 것을 의미합니다. 일반적으로 이는 'UNDO_RETENTION' 매개 변수 및/또는 UNDO 테이블 공간이 너무 작아서 증가해야한다는 것을 의미합니다. 잠재적으로,'ATOMIC_REFRESH'가 달성 할 수있는 새로 고침을 수행하는 데 필요한 시간을 줄일 수 있습니다. –
내 사무실 PC에서 멀리 떨어져 있기 때문에 정확한 ORA 오류가 발생하기까지 기다려야합니다. 검색 할 때 Tom Kyte 역시 01555에 대해 언급했습니다. 그러나 여기에 제가하는 일이 있습니다. 큰 테이블을 기반으로 MVIEW를 만듭니다. 그것은 약 40-60 분 걸립니다. MVIEW 크기는 35-40GB입니다. DBMS_MVIEW로 새로 고침 (완료)하면 2-3 시간 동안 스크립트가 실행되고 MVIEW REFRESH PATH 크기가 문제가되어 오류가 발생합니다. – Guru