-
오라클 뷰 view 생성, 조회, 삭제, 수정 하는 방법 | Materialized View 생성, 조회, 수정Brawny Develop/KR_Practical Development Basics_Quary 2025. 9. 3. 15:04
오라클에서 View는 자주 사용하는 SELECT 쿼리를 객체로 저장해두고 가상의 테이블처럼 활용할 수 있는 개념이다. View는 데이터를 직접 저장하지 않고 항상 원본 테이블을 기반으로 최신 데이터를 보여준다는 특징이 있다.
이 덕분에 복잡한 쿼리를 단순화하거나 보안상 특정 컬럼을 감춘 형태로 데이터를 제공할 수 있다.
반면에, Materialized View는 쿼리 결과를 실제로 저장하기 때문에 성능상 이점을 제공하지만 데이터가 원본과 즉시 동기화되지 않는다는 차이가 있다.
🔹 View 생성하기
- CREATE VIEW: 새로운 뷰 생성
- OR REPLACE: 기존 뷰가 있으면 덮어쓰기
- WITH CHECK OPTION: 뷰 조건을 위반하는 수정 불가
- WITH READ ONLY: 읽기 전용 뷰 생성
🔹 View 조회하기
오라클에서 생성된 뷰 목록과 정의를 확인할 수 있다.
- USER_VIEWS: 내가 만든 뷰 확인
- ALL_VIEWS: 내가 접근 가능한 뷰 확인
- DBA_VIEWS: DB 전체 뷰 확인 (DBA 권한 필요)
🔹 View 삭제하기
뷰를 삭제하려면 DROP 명령어를 사용한다.
뷰는 단순히 정의만 삭제되며 원본 테이블의 데이터에는 영향을 주지 않는다.
🔹 View 수정하기
뷰는 직접 수정하는 명령어가 없다.
대신 CREATE OR REPLACE VIEW를 사용해 새 정의로 덮어써야 한다.
이렇게 하면 기존 emp_public 뷰를 새로운 정의로 교체할 수 있다.
🔹 Materialized View란?
일반 뷰는 데이터를 저장하지 않지만, Materialized View(MV)는 쿼리 결과를 실제로 저장한다.
복잡한 집계나 대량 데이터를 빠르게 조회할 수 있다는 장점이 있다.
다만, 데이터는 자동으로 최신화되지 않고 REFRESH 작업을 통해 동기화해야 한다.
🔹 Materialized View 생성하기
- BUILD IMMEDIATE: 생성 시 데이터 채움
- REFRESH COMPLETE: 전체 데이터를 새로 갱신
- REFRESH FAST: 변경된 부분만 빠르게 갱신 (MV 로그 필요)
- START WITH / NEXT: 자동 REFRESH 주기 설정
🔹 Materialized View 갱신하기
- 수동 갱신 가능
- 자동 갱신은 START WITH, NEXT 옵션으로 스케줄 지정 가능
- ON COMMIT 옵션으로 트랜잭션 커밋 시마다 갱신도 가능하지만 성능 부담이 크다
🔹 Materialized View 삭제하기
🔹 정리
- 일반 View: 가상의 테이블, 데이터 저장 없음, 항상 최신 데이터 반영
- Materialized View: 쿼리 결과 저장, 조회 성능 우수, REFRESH 필요
관리하는 방법은 VIEW는 CREATE / DROP / CREATE OR REPLACE로 다루고,
MV는 REFRESH를 주기적으로 수행해야 한다
복잡한 데이터를 자주 조회해야 하는 환경이라면 Materialized View를 적절히 활용해 성능을 확보하는 것이 좋다.
반면 단순히 쿼리를 단순화하거나 보안을 위해 데이터 일부를 노출해야 하는 상황이라면 일반 View를 사용하는 것이 적합하다.'Brawny Develop > KR_Practical Development Basics_Quary' 카테고리의 다른 글
NVARCHAR 와 VARCHAR의 차이와 변환 방법 및 주의해야 할 점 | CHAR, 우선순위 (0) 2025.09.03 MyBatis SelectKey 사용법 | After, Before, 여러개 사용법 (0) 2025.07.08 mybatis foreach map key value 사용법 | List, 배열 (0) 2025.07.08 Oracle DECODE 여러개 조건, NULL, LIKE , CASE 문 비교 (0) 2025.07.08 Oracle TIMESTAMP로 커밋,삭제 이전 데이터 조회하는 방법 | Flashback 없이 이전 상태 확인하기 (0) 2025.06.25