1. MVIEW 생성시 옵션
- BUILD IMMEDIATE : MView 생성과 동시에 데이터들도 생성되는 옵션
- BUILD DEFERRED : MView를 생성은 하지만, 그 안의 데이터는 추후에 생성하도록 하는 옵션
- REFRESH : MView의 데이터를 새로고치는 시기와 방법를 결정
ㅇ시기: ON COMMIT
- 자동 갱신
- 조건: 뷰에 입력되는 모든 필드가 PK로 잡혀야 함
ON DEMAND
- 수동 갱신
- 조건: DBMS_MVIEW.REFRESH('MVIEW NAME'); 호출
ㅇ 방법: COMPLETE
- MView의 정의에 따라 MView의 데이터 전체가 Refresh
FAST
- 새로운 데이터가 삽입될 때마다 점진적으로 Refresh
FORCE
- 이 경우 먼저 Fast Refresh가 가능한지 점검 후 가능하면 이를 적용하고,
아니면 Complete Refresh를 적용(디폴트)
NEVER
- 갱신하지 않는다.
ㅇ 반복: START WITH SYSDATE -- 최초 시작 시간
NEXT SYSDATE + (1 / 24 ) -- 1시간 마다 반복
NEXT SYSDATE + (1 / 1440 ) -- 1분 마다 반복
- 조건: 뷰에 입력되는 모든 필드가 PK로 잡혀야 함.
- 특정시간 마다 Refresh
- 방법 조건에 따른 FEFRESH를 한다.
따라서,
자동갱신 및 반복갱신을 하기 위해선 뷰에 입력되는 모든 필드가 PK로 잡혀야 하고,
자동갱신을 하지 않고 수동갱신을 하기 위해서는
JOB에 프로시저를 등록하여 일정주기로 호출하여 사용해야 한다.
2. SAMPLE CODE
1) 자동반복
CREATE MATERIALIZED VIEW RF_TEMP_USER_DD
BUILD IMMEDIATE
REFRESH FORCE
ON COMMIT
AS SELECT TV.DUID
FROM TED_TV_test TV
,(
SELECT DUID AS USER_ID
FROM TED_USER_CONTENT_test
) TT
WHERE TV.DUID = TT.USER_ID
/*
조건: TV.DUID 와 TT.USER_ID는 모두 PK로 잡았음.
*/
2) 수동반복 / 1시간 마다 REFRESH
CREATE MATERIALIZED VIEW RF_TEMP_USER_
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND
START WITH SYSDATE
NEXT SYSDATE + (1/24) /* 1시간 마다 REFRESH */
AS SELECT TV.DUID
FROM TED_TV_test TV
,(
SELECT DUID AS USER_ID
FROM TED_USER_CONTENT_test
) TT
WHERE TV.DUID = TT.USER_ID
/*
조건: TV.DUID 와 TT.USER_ID는 모두 PK로 잡았음.
*/
3) 수동반복
CREATE MATERIALIZED VIEW RF_TEMP_USER_
BUILD IMMEDIATE
REFRESH FORCE
ON DEMAND
AS SELECT TV.DUID
FROM TED_TV_test TV
,(
SELECT DUID AS USER_ID
FROM TED_USER_CONTENT_test
) TT
WHERE TV.DUID = TT.USER_ID
반응형
'DB > Oracle' 카테고리의 다른 글
| mview 갱신 시간 설정 / mview 갱신 설정 (0) | 2016.02.04 |
|---|---|
| Oracle Materialized View (0) | 2016.02.04 |
| ORA-29275 부분 다중 바이트 문자 Error (0) | 2016.02.04 |
| oracle lock 조회 lock 해제 oracle 락 조회 락 해제 오라클 락 조회 오라클 락 해제 (0) | 2016.02.04 |
| Oracle ORA-12705 에러 발생시 DATABASE (0) | 2016.02.04 |