본문 바로가기
Database/Oracle

[ORACLE] ALL_VIEWS 뷰 사용법과 실무 활용 전략

by Papa Martino V 2025. 6. 15.
728x90

오라클 ALL_VIEWS 뷰 사용법과 실무 활용 전략
[Oracle] ALL_VIEWS

 

Oracle Database에서 View(뷰)는 복잡한 쿼리를 캡슐화하고 데이터 보안을 강화하기 위한 중요한 수단입니다. 뷰는 테이블과 달리 실제 데이터를 저장하지 않으며, SQL 문을 기반으로 하는 가상의 테이블입니다. Oracle에서는 이 뷰(View)들에 대한 정의와 메타데이터를 확인할 수 있도록 ALL_VIEWS라는 시스템 뷰를 제공합니다.

1. ALL_VIEWS란 무엇인가?

ALL_VIEWS는 사용자가 접근 권한을 가진 모든 뷰에 대한 정의 정보를 제공하는 Oracle 시스템 뷰입니다. 즉, 자신이 소유하거나 권한이 부여된 뷰에 대한 SQL 정의문을 포함하며, 뷰를 분석하거나 변경하려는 상황에서 유용하게 사용됩니다.

2. 주요 컬럼 설명

ALL_VIEWS에서 자주 활용되는 주요 컬럼은 다음과 같습니다:

컬럼명 설명
OWNER 뷰를 소유한 사용자
VIEW_NAME 뷰 이름
TEXT_LENGTH 뷰 정의 SQL의 문자 길이
TEXT 뷰 정의 SQL문
TYPE_TEXT 뷰 유형 텍스트 (일반적으로 NULL)
OID_TEXT Object ID 텍스트 (사용 빈도 낮음)
VIEW_TYPE_OWNER VIEW_TYPE을 정의한 소유자 (공통적으로 NULL)

3. USER_VIEWS, ALL_VIEWS, DBA_VIEWS 비교

Oracle은 사용자의 권한 범위에 따라 다음과 같은 뷰 정보를 제공하는 시스템 뷰들을 구분합니다:

뷰 이름 대상 설명
USER_VIEWS 자신이 소유한 뷰 일반 사용자 및 개발자용
ALL_VIEWS 접근 가능한 모든 뷰 자신이 소유하거나 권한 있는 뷰 포함
DBA_VIEWS 모든 사용자 소유의 뷰 DBA 권한 보유자만 조회 가능

4. 실무 활용 예제

4.1 특정 스키마의 뷰 목록 조회


SELECT VIEW_NAME
FROM ALL_VIEWS
WHERE OWNER = 'HR';
  

4.2 뷰 정의문 조회 (텍스트 내용 포함)


SELECT TEXT
FROM ALL_VIEWS
WHERE VIEW_NAME = 'EMPLOYEE_VIEW'
  AND OWNER = 'HR';
  

4.3 뷰 정의문 길이로 필터링 (복잡한 뷰 식별)


SELECT VIEW_NAME, TEXT_LENGTH
FROM ALL_VIEWS
WHERE TEXT_LENGTH > 1000;
  

4.4 모든 뷰의 이름과 길이 정렬 출력


SELECT OWNER, VIEW_NAME, TEXT_LENGTH
FROM ALL_VIEWS
ORDER BY TEXT_LENGTH DESC;
  

5. ALL_VIEWS 활용 시 유의사항

  • TEXT 컬럼은 LONG 타입이므로 SQL Developer나 기타 툴에서 일부 잘려 보일 수 있습니다.
  • 복잡한 뷰는 DBMS_METADATA.GET_DDL 함수를 통해 전체 스크립트를 보는 것이 더 안정적입니다.
  • 뷰 정의가 변경되면 ALL_VIEWS는 즉시 반영됩니다. 따라서 실시간 점검용으로 유용합니다.
  • 보안상 민감한 정보가 포함된 경우, 권한이 없는 사용자에게 해당 뷰를 제공하지 않는 것이 바람직합니다.

6. DBMS_METADATA를 활용한 뷰 스크립트 추출


SELECT DBMS_METADATA.GET_DDL('VIEW', 'EMPLOYEE_VIEW', 'HR') FROM DUAL;
  

이 쿼리는 ALL_VIEWS.TEXT보다 더 완전한 CREATE VIEW 문을 제공합니다. 권장 사용 방식입니다.

7. 뷰 관련 보조 뷰

  • ALL_TAB_COLUMNS: 뷰의 각 컬럼 정보
  • ALL_DEPENDENCIES: 뷰와 다른 객체 간의 의존성 확인
  • ALL_OBJECTS: 뷰의 객체 타입 및 생성일 정보
  • ALL_SYNONYMS: 뷰에 대한 동의어(Synonym) 조회

8. 실무에서의 ALL_VIEWS 사용 전략

  • 운영 DB에서 뷰 정의를 변경하거나 삭제하기 전에는 ALL_VIEWS 또는 DBMS_METADATA를 통해 백업을 반드시 확보합니다.
  • 뷰 간의 의존성 문제를 해결하기 위해 ALL_DEPENDENCIES와 함께 분석해야 오류를 방지할 수 있습니다.
  • 자동 생성된 뷰(예: ERP, CRM 솔루션의 내부 뷰)는 분석 전 소스 검토와 비즈니스 로직 이해가 선행되어야 합니다.

9. 결론

ALL_VIEWS는 Oracle에서 SQL 뷰의 구조를 분석하고 유지보수하기 위한 핵심 도구입니다. 이를 통해 뷰 정의를 명확히 파악하고, 의도하지 않은 쿼리 동작이나 보안 취약점을 사전에 점검할 수 있습니다. 특히 대규모 시스템에서는 뷰가 복잡한 비즈니스 로직을 포함하고 있으므로, ALL_VIEWS를 통한 정기적인 점검이 필요합니다.

10. 참고자료

 

728x90