COMPLETE 옵션 자체가 LOG에 있는 데이터로 추출하는게 아니라서
SELECT 테이블 전체로 재집계를 한다면 오래 걸릴꺼 같은데요
- REFRESH 절은 오라클이 MView의 데이터를 언제, 어떻게 Refresh 하는지를 결정 하는 방법입니다. Refresh 방법에는 ON COMMIT 방법과, ON DEMAND 방법 2 가지가 있습니다.
ON COMMIT 은 기초 테이블에 Commit 이 일어날 때 Refresh 가 일어나는 방안이며, 이는 1 개의 테이블에 COUNT(*), SUM(*)과 같은 집합 함수를 사용하거나, MView에 조인만이 있는 경우, Group By 절에 사용된 컬럼에 대해 COUNT(col) 함수가 기술된 경우만 사용이 가능 합니다.
ON DEMAND는 사용자가 DBMS_MVIEW 패키지 (REFRESH, REFRESH_ALL_MVIEWS, REFRESH_DEPENDENT) 를 실행 한 경우 Refresh 되는 경우 입니다.
- Refresh를 하는 방법에는 FORCE, COMPLETE, FAST, NEVER의 4가지가 존재 합니다.
COMPLETE : MView의 정의에 따라 MView의 데이터 전체가 Refresh 되는 것으로 ATOMIC_REFRESH=TRUE와 COMPLETE으로 설정한 경우 입니다.
FAST : 새로운 데이터가 삽입될 때마다 점진적으로 Refresh 되는 방안으로 Direct Path나 Mview log를 이용 합니다.
FORCE : 이 경우 먼저 Fast Refresh가 가능한지 점검 후 가능하면 이를 적용하고, 아니면 Complete Refresh를 적용 합니다.(디폴트)
NEVER : MView의 Refresh를 발생시키지 않습니다
Materialized View Log 생성할때
WITH Sequence 옵션을 주고 생성해야 할듯.
음... 스터디 할때 분명 했던 부분인것 같은데...
기억이 전혀 나질 안다가 들으니까 떠오르는구만...쩝...
Good Job.