학습자료(~2017)/오라클

11. 오라클 - VIEW 관리 및 활용

단세포소년 2011. 3. 15. 22:29
반응형

. view 는 table 과 유사하고 table 처럼 사용하지만 table과 달리 data를 저장하기 위한 물리적 공간을 필요로 하지 않는다.
. data 를 물리적이 아닌 논리적 집합을 갖는다.
. table 과 마찬가지로 select , insert, update, delete 가 가능
. view 를 생상하면 select 문장이 dictionnary에 저장된다.
. view 를 조회하면 dictionary에 저장되어 있는 해당 view의 sql 문장을 이용하여 근간이 되는 table을 access한다.


VIEW 생성
CREATE VIEW v_emp ( empno, ename , job, mar, hinate, deptno ) AS SELECT empno, ename , job, mar, hinate, deptno FROM emp WHERE job = 'MANAGR' ;

VIEW 삭제
DROP VIEW v_ep ; (VIEW를 없앤다고 해도 물리적이지 않으므로 data가 삭제 되지 않는다.)

VIEW 변경
CREATE OR REPLACE VIEW ~~


VIEW를 사용하는 이유
- 보안 관리을 위한 VIEW
   . 보안 등급에 맞추어 컬럼 및 범위를 정하고 privilege 부여
   . 연산 결과만 제공하고 Algorithm 을 숨기기 위해 사용
   . SELECT List 를 Function으로 가공하여 UPDATE, INSERT를 원천적으로 봉쇄
   . Table 의 명칭이나 Column의 명칭을 숨기기 위한 View

- 사용 편의를 위한 View
   . 검색조건의 단순화
   . End User를 위한 Table 명, Column의 한글화
   . join 문장의 단순화를 위한 View

- 수행속도 향상을 위한 View
   . 미리 Tuning 된 SQL문으로 생성한 View
   . 특정한 절차로 수행시키기 위해 View 의 SELECT List에 HINT등을 사용한 View
 
- 융통성 향상을 위한 View
   . 업무 규칙의 변경이 빈번하여 응용프로그램의 수정이 자주 발생 경우의 해결


- 보안관리를 위한 View
CREATE VIEW v_emp(empno, ename) AS SELECT NVL(empno,NULL), ename FROM emp;
 - > NVL(empno,NULL) 같이 view에 함수를 이용한 가공된 Column은 INSERT, UPDATA 불가

CREATE VIEW v_emp2(empno,ename,annual_sal) AS SELECT empno, ename, (sal + NVL(comm,0))*12 annual_sal FROM emp;
 - > 연산을 숨길수 있다.



읽기전용으로 만들기
CREATE VIEW v_emp_read_only(empno, ename) AS SELECT empno, ename FROM emp WITH READ ONLY;



수행속도 향상을 위한 VIEW

SELECT /*+ INDEX_DESC(dept pk_dept) */ deptno FROM detp WHERE deptno=>0 AND rownum=1;

/*+ INDEX_DESC(dept pk_dept) */ ====>힌트를 주는 것임
(dept테이블의 pk_dept라는 인덱스를 desc거꾸로 정렬해라 하는 뜻)
where절에 deptno>0이라는 당연한 조건을 준이유는 옵티마이저가 검색조건을 비교할때
인덱스(deptno에 생성되어있는 인덱스)를 사용하기 때문이다.
rownum=1은 한건만. 그럼 결국 가장 큰값이 구해지는 것이다.



VIEW 관련 Dictionary
 - > user_views

반응형