2013년 10월 3일 목요일

[오라클 구체화뷰, 물리뷰]오라클 뷰, oracle mview 오라클과 같은 관계형 데이터 베이스에서 뷰(View)를 가상의 테이블이라고 한다. 뷰는 SQL문장 라인에 직접 기술하는 인라인뷰(inline view)와 create view로 만들어지는 뷰가 있는데 실제 데이터는 뷰의 원본 테이블에 존재하고 데이터의 논리적 결합 및 조합된 결과(통계정보)의 질의 형태만 저장해 둔 객체를 의미한다. MVIEW라고 불리는 물리뷰(구체화뷰)의 용도는 그룹함수 min, max, sum, avg등의 값을 미리 만들어 놓을때 유용하며 user_segments에서 확인가능하다. 오라클 8i이후 부터 새롭게 추가된 구체화 뷰 (MATERIALIZED VIEW) 는 기존 뷰와 비슷하지만 차이가 나는 부분은 실제 데이터를 자신이 가지고 있으며 원본 테이블에 INSERT, UPDATE, DELETE가 발생하면 새로운 데이터를 구체화된 뷰에 반영된다. [기본 문법] CREATE MATERIALIZED VIEW VIEW_NAME BUILD IMMEDIATE[DEFERRED] REFRESH [ FAST ] [ COMPLETE ] [ FORCE ] [ NEVER ] ENABLE QUERY REWRITE AS [SELECT문장]; 설명 (해석) BUILD IMMEDIATE : MView 생성과 동시에 데이터들도 생성되는 옵션. BUILD DEFERRED : MView 생성은 하지만, 그 안의 데이터는 추후에 생성하도록 하는 기능 입니다. MView 생성시 BUILD IMMEDIATE 대신 BUILD DEFERRED 옵션을 사용하면 조회되는 데이터가 없다. BUILD IMMEDIATE REFRESH : 구체화된 뷰가 생성되자마자 바로 실행 가능한 상태로 된다. REFRESH 절은 아랫 부분에 정의된 AS절에서 사용된 셀렉트문 내의 원본 테이블의 데이터가 변경되면 구체화된 뷰를 언제 변경할 것인지에 대한 일정을 결정한다. ON COMMIT 은 기초 테이블에 Commit 이 일어날 때 Refresh 가 일어나는 방안이며, 이는 1 개의 테이블에 COUNT(*), SUM(*)과 같은 집합 함수를 사용하거나, MView에 조인만이 있는 경우, Group By 절에 사용된 컬럼에 대해 COUNT(col) 함수가 기술된 경우만 사용이 가능 합니다. ON DEMAND는 사용자가 DBMS_MVIEW 패키지 (REFRESH, REFRESH_ALL_MVIEWS, REFRESH_DEPENDENT) 를 실행 한 경우 Refresh 되는 경우 입니다. [FAST] : 원본 테이블에 변경된 데이터만 구체화 뷰에 갱신한다. [COMPLETE] : 원본테이블이 변경되면 전부 갱신한다. [FORCE] : FAST와 동일한 기능을 한다. [NEVER] : 원본테이블이 갱신되어도 뷰에 반영하지 않는다. ENABLE QUERY REWRITE 절은 일반 USER가 작성한 SQL 문이 구체화 된 뷰를 통해 데이터를 검색하는 것이 더 빨리 데이터를 찾을 수 있다고 분석되면 사용자의 SQL문을 구체화뷰를 통해 검색하게 하는 기능이다. 마지막으로 일반 View나 Snapshot처럼 AS 구문 뒤에 필요한 컬럼과 조건들을 기술 하면 된다 MVIEW 를 만들려먼 먼저 DBA로 부터 권한을 받아야 한다. 뷰 생성 권한 받기 SQL>CONNECT / AS SYSDBA SQL>GRANT CREATE MATERIALIZED VIEW TO SCOTT; //scott사용자에게 mview만드는 권한을 준다. SQL>GRANT ALTER ANY MATERIALIZED VIEW TO scott; SQL>GRANT QUERY REWRITE TO scott; [예] MView를 생성하고 테스트 하기 위해서는, sysdba에서 Query Rewrite권한과 CREATE MATERIALIZED VIEW 권한을 MView를 생성하는 유저에게 부여해야 합니다. -- sysdba 접속 SQL> conn / as sysdba 연결되었습니다. SQL> GRANT QUERY REWRITE TO SCOTT; 권한이 부여되었습니다. SQL> GRANT CREATE MATERIALIZED VIEW TO SCOTT; 권한이 부여되었습니다. SQL> conn scott/tiger 연결되었습니다. -- MATERIALIZED VIEW 생성 SQL> CREATE MATERIALIZED VIEW dept_sal BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND ENABLE QUERY REWRITE AS SELECT SUM(a.sal), a.deptno FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY a.deptno; 구체화된 뷰가 생성되었습니다. SQL> SELECT * FROM DEPT_SAL; SUM(A.SAL) DEPTNO ---------- ---------- 8850 10 13875 20 9334 30 [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecOracle&wr_id=220 라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터 (오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의) www.onjprogramming.co.kr [개강안내]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr) [주말] [10/5]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 [10/5]SQL초보에서실전전문가까지 [평일야간] [10/4]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 [10/4]SQL초보에서실전전문가까지 [평일주간] [10/8]스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 [10/4]PL/SQL,오라클힌트,SQL튜닝,사례연구 JAVA ORACLE iPhone/Android .NET 표준웹/HTML5 채용/취업무료교육 초보자(재학생)코스 PL/SQL,오라클힌트,SQL튜닝,사례연구 총 4일 32시간 10-04 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 총 4일 32시간 10-08 SQL초보에서실전전문가까지 총 8일 56시간 10-10 SQL초보에서실전전문가까지 총 18일 54시간 10-04 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 총 11일 33시간 10-08 오라클 마스터 총 18일 54시간 10-10 PL/SQL,오라클힌트,SQL튜닝,사례연구 총 10일 30시간 10-10 오라클 마스터 총 8일 56시간 10-05 SQL초보에서실전전문가까지 총 8일 56시간 10-05 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 총 4일 32시간 10-05 PL/SQL,오라클힌트,SQL튜닝,사례연구 총 4일 32시간 10-05

[오라클 구체화뷰, 물리뷰]오라클 뷰, oracle mview 

오라클과 같은 관계형 데이터 베이스에서 뷰(View)를 가상의 테이블이라고 한다.  

뷰는 SQL문장 라인에 직접 기술하는 인라인뷰(inline view)와 create view로 만들어지는 뷰가 있는데
실제 데이터는 뷰의 원본 테이블에 존재하고 데이터의 논리적 결합 및 조합된 결과(통계정보)의 질의 형태만 저장해 둔 객체를 의미한다.

MVIEW라고 불리는 물리뷰(구체화뷰)의 용도는 그룹함수 min, max, sum, avg등의 값을 미리 만들어 놓을때 유용하며 user_segments에서 확인가능하다.
 
오라클 8i이후 부터 새롭게 추가된 구체화 뷰 (MATERIALIZED VIEW) 는 기존 뷰와 비슷하지만 차이가 나는 부분은 실제 데이터를 자신이 가지고 있으며 원본 테이블에 INSERT, UPDATE, DELETE가 발생하면 새로운 데이터를 구체화된 뷰에 반영된다. 

[기본 문법]
CREATE MATERIALIZED VIEW VIEW_NAME
BUILD IMMEDIATE[DEFERRED] REFRESH [ FAST ]
                                          [ COMPLETE ]
                                          [ FORCE ]
                                          [ NEVER ]
ENABLE QUERY REWRITE
AS
[SELECT문장];



설명 (해석)
BUILD IMMEDIATE : MView 생성과 동시에 데이터들도 생성되는 옵션.

BUILD DEFERRED : MView 생성은 하지만, 그 안의 데이터는 추후에 생성하도록 하는 기능 입니다.
                 MView 생성시 BUILD IMMEDIATE 대신 BUILD DEFERRED 옵션을 사용하면 조회되는 데이터가 없다. 
    
BUILD IMMEDIATE REFRESH : 구체화된 뷰가 생성되자마자 바로 실행 가능한 상태로 된다.

REFRESH 절은 아랫 부분에 정의된 AS절에서 사용된 셀렉트문 내의 원본 테이블의 데이터가 변경되면 구체화된 뷰를 언제 변경할 것인지에 대한 일정을 결정한다.

ON COMMIT 은 기초 테이블에 Commit 이 일어날 때 Refresh 가 일어나는 방안이며, 
    이는 1 개의 테이블에 COUNT(*), SUM(*)과 같은 집합 함수를 사용하거나, MView에 조인만이 
    있는 경우,  Group By 절에 사용된 컬럼에 대해 COUNT(col) 함수가 기술된 경우만 
    사용이 가능 합니다.
 
ON DEMAND는 사용자가 DBMS_MVIEW 패키지 (REFRESH, REFRESH_ALL_MVIEWS,
    REFRESH_DEPENDENT) 를 실행 한 경우 Refresh 되는 경우 입니다.


[FAST] : 원본 테이블에 변경된 데이터만 구체화 뷰에 갱신한다.
[COMPLETE] : 원본테이블이 변경되면 전부 갱신한다.
[FORCE] : FAST와 동일한 기능을 한다.
[NEVER] : 원본테이블이 갱신되어도 뷰에 반영하지 않는다.
 
ENABLE QUERY REWRITE 절은 일반 USER가 작성한 SQL 문이 구체화 된 뷰를 통해 데이터를 검색하는 것이 더 빨리 데이터를 
찾을 수 있다고 분석되면 사용자의 SQL문을 구체화뷰를 통해 검색하게 하는 기능이다.

마지막으로 일반 View나 Snapshot처럼 AS 구문 뒤에 필요한 컬럼과 조건들을 기술 하면 된다
 
MVIEW 를 만들려먼 먼저 DBA로 부터 권한을 받아야 한다.
 
뷰 생성 권한 받기
SQL>CONNECT / AS SYSDBA
SQL>GRANT CREATE MATERIALIZED VIEW TO SCOTT;  //scott사용자에게 mview만드는 권한을 준다.
SQL>GRANT ALTER ANY MATERIALIZED VIEW TO scott;
SQL>GRANT QUERY REWRITE TO scott;
 
[예]

MView를 생성하고 테스트 하기 위해서는,  sysdba에서 Query Rewrite권한과  
CREATE MATERIALIZED VIEW 권한을 MView를 생성하는 유저에게 부여해야 합니다.


-- sysdba 접속 
SQL> conn / as sysdba
연결되었습니다.
 
 

SQL> GRANT QUERY REWRITE TO SCOTT;
권한이 부여되었습니다.
 
 
SQL> GRANT CREATE MATERIALIZED VIEW TO SCOTT;
권한이 부여되었습니다.

SQL> conn scott/tiger
연결되었습니다.
 
 
-- MATERIALIZED VIEW 생성
SQL> CREATE MATERIALIZED VIEW dept_sal
     BUILD IMMEDIATE 
     REFRESH
     COMPLETE       
     ON DEMAND      
     ENABLE QUERY REWRITE
     AS
     SELECT SUM(a.sal), a.deptno
     FROM emp a, dept b
     WHERE a.deptno = b.deptno
     GROUP BY a.deptno;
구체화된 뷰가 생성되었습니다.
 

SQL> SELECT * FROM DEPT_SAL;
 
SUM(A.SAL)     DEPTNO
---------- ----------
      8850         10
     13875         20
      9334         30


라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  




댓글 없음:

댓글 쓰기