2013년 9월 4일 수요일

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

[오라클 구체화뷰, 물리뷰, 오라클뷰,ORACLE VIEW]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


오라클자바커뮤니티 실전 실무 강좌 - 개인 80% 환급


스프링3.X게시판&오라클힌트,SQL튜닝,사례연구

강좌명 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구(주말주간(토/일))
교재 자체교재 or PDF 무료제공
강좌 일정 09월07일(토) ~ 09월15일(일)((주말주간(토/일)) 09:30~18:30, 4일) 총 32시간
강의 장소 [A강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호)
[약도보기]
수강절차 - 강좌내용 확인
- 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제)
- 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출
- 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지
- 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등)
- 강좌 수강
- 수강후 : 교육 후 설문 작성
수강료 - 760,000원
[고용주환급]대기업:12만원 전후, 중소기업:16만원 전후환급

[개인수강지원(개인환급)]정규직 608,000 ,비정규직:전액환급
대기업(상시근로자 300인 이상 대기업)은 개인환급 불가합니다.

* 휴강 :법정공휴일
수강료
입금안내
- 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조)
문의사항 02-851-4790 번으로 연락 부탁 드립니다.
교육개요 [대한민국 유일강좌] 어떠한 교육기관에서도 흉내 낼 수 없는 커리큘럼 입니다.
2008년 이래 실무커리큘럼을 만들어 낸지도 5년이 넘었습니다. 대한민국 개발자 분들이 OK할때 까지 개발자분들을 위한 개발자 전용 교육과정을 생산하겠습니다!

본 과정은 실무 개발에서 꼭 필요한 부분만 추출해서 강의하는 개발자 전용 강좌 입니다.
자바웹 개발은 해 보았지만 스프링을 안해본 개발자 or 스프링을 해 보았지만 그 개념이 모호한 개발자들을 위해 최소, 최적의 이론을 학습하고 하얀 백지위에서 게시판의 뼈대 부터 설계하면서 코딩을 하고, 기능을 하나씩 붙여감으로써 스프링 웹개발에 대해 이해할 수 있도록 했으며 실무에서 몇년 개발했지만 기본 SQL만 사용하고 힌트구문이나 SQL튜닝 대한 개념과 경험이 없어서 늘 SQL때문에 2% 부족한 개발자를 위한 최적의 과정 입니다. [주:본 과정은 실습위주의 과정 입니다]
교육목표 - Spring IoC, AOP, @AspectJ Annotation
- Spring JDBC, MVC에 대한 이해
- 스프링 기반의 자바 웹 개발자 만들기
- 오라클 힌트 구문의 이해
- 오라클 인덱스의 이해 및 SQL튜닝의 이해
- SQL 사례연구
교육대상 - JSP기반에서만 개발을 해본 자바 개발자
- 스프링에 자신이 없는 개발자
- 오라클 SQL힌트 및 튜닝에 대해 배워보고 싶은 개발자
선수학습 - JAVA, JSP
- SQL기본
 

최적화를 통한 스프링3.X 기본의 이해 - Spring의 도입배경 및 아키텍처
(자바빈의 태동부터 EJB, 그리고 현재까지)
- Eclipse4.3 Kepler, Tomcat7, Maven, STS 플러그인에 대한 설치 및 이해
- Spring IoC(DI, DL) 이론/실습
- Spring AOP(JoinPoint, Pointcut, Advice, Aspect, Weaving) 이론/실습
- Spring AOP @AspectJ Annotation 이론/실습
- Spring Web MVC, JDBC
- Spring Controller
- Spring ORM에 대한 이해
- SQLMapper MyBatis의 이해
스프링 게시판 작성하기 [개요]

백지에 그림을 그리듯 , 빈 바탕위에 하나씩 따라하면서 코딩하기
(WEB.XML, 스프링설정XML파일 등 부터 하나씩)
스프링 게시판 작성에 자신이 있다면 어떠한 Spring Framework 개발도 가능 합니다!

[기술요소]

Spring IoC
Spring AOP, @AspectJ Annotation
Spring JDBC
Spring MVC
Spring ORM
Spring Controller
Spring & MyBatis
Ajax


- 게시판 기능 설계
- 작성 기능
게시판 리스트보기
게시물 본문내용 미리 보기(AJAX)
게시 글 상세보기
커멘트(댓글)기능
글쓰기
글 수정하기
글 삭제하기
답변 글
DAO단 로깅 기능(Spring AOP, @AspectJ Annotation적용)
MyBatis 적용(쿼리문을 XML로)
오라클 힌트 & SQL튜닝, 사례연구 [SQL튜닝 기본 & HINT]

SQL튜닝 및 오라클 힌트소개

AUTO TRACE, Explain Plan, SQLTrace 소개 및 사용법
Oracle Optimizer란?
Optimizer Mode란?

Optimizer Mode변경 Hint
(RULE, FIRST_ROWS, ALL_ROWS, CHOOSE)

실행계획 SQL연산의 이해
(AND-EQUAL, CONCATENATION, COUNT, FILTER, HASH ANTI_JOIN, HASH SEMI-JOIN,
INDEXRANGE SCAN, INLIST ITERATOR, MERGE, MERGE SEMI_JOIN, MERGE ANTI_JOIN)

실행경로변경힌트 이론 및 실습
(FULL, ROWID, CLUSTER, HASH, INDEX, INDEX_ASC, INDEX_DESC, NO-INDEX, INDEX_FFS)

조인순서변경힌트 이론 및 실습
(ORDERED, USE_NL, USE_HASH, HASH_AJ, LEADING, USE_MERGE, DRIVING_SITE)

* 위 대부분의 실습은 대량의 데이터를 테이블에 입력 후 실전과 같은 실습 예정이며
실습을 통해 결과를 확인함으로써 이론에 대해 이해할 수 있습니다.

[SQL튜닝 & SQL사례연구]

- SQL튜닝 연구
SQL문 작성요령
SQL TIP
Where vs HAVING
ORDER BY 튜닝(INDEX_ASC, INDEX_DESC를 이용한 튜닝)
MAX, MIN 값의 튜닝(INDEX관련 힌트를 이용한 튜닝)
MINUS를 사용한 경우의 SQL튜닝
COUNT(*) 튜닝(index_ffs를 이용한 튜닝)
DISTINCT의 튜닝(EXISTS)
INDEX를 이용한 튜닝
(Bitmap Index, Function Based Index)
OR연산 튜닝
index_ss(SKIP SCANNING)을 이용한 튜닝
index_ffs(Fast Full Scan)를 이용한 튜닝
mview를 이용한 group by 튜닝

- SQL사례 연구

SQL작성 TIP
WHERE절 작성 요령
드라이빙 테이블, 비드라이빙 테이블 선정
Oracle12c의 Top-n, 시퀀스를 이용한 default value설정
특정 조건대로 번호를 부여하는 방법
Co-relateed subquery
inlineview를 with문으로
매월 1,3주 토요일은 휴무일이다 현재월의 휴무월을 출력
컬럼값이 Unique인지 확인하는 SQL
SQL*Plus로 로그인막는 트리거 작성
순위 Query
컬럼에 분포하는 값의 종류 COUNT
컬럼 값의 범위를 주어 개수 세기
SQL WHERE vs HAVING
중복데이터 삭제
샘플데이터 추출하기
first, last rank function
job별로 급여의 합계(부서별로)를 표시하기(Matrix Report)
SQL분석 함수 순위매기기
Explicitly Named Indexes(create table안의 create index)
CASE를 사용한 SQL문의 통합
 

댓글 없음:

댓글 쓰기