본문 바로가기
Database

[ Oracle] 오라클 ALL_DIRECTORIES 뷰 완전 정리

by 코드개미 2025. 6. 23.

오라클 ALL_DIRECTORIES 뷰 완전 정리
[Oracle] ALL_DIRECTORIES

 

Oracle 데이터베이스에서는 외부 파일과의 입출력 작업이 필요한 경우 디렉터리 객체(Directory Object)를 사용합니다. 이러한 디렉터리 객체를 관리하고 확인할 수 있는 시스템 뷰가 바로 ALL_DIRECTORIES입니다. 본 글에서는 Oracle 환경에서 ALL_DIRECTORIES 뷰의 구조, 역할, 보안 관리 및 실무 활용법에 대해 자세히 설명합니다.

1. ALL_DIRECTORIES란?

ALL_DIRECTORIES는 Oracle 데이터베이스에서 현재 사용자가 접근 권한을 가진 디렉터리 객체 목록을 보여주는 뷰입니다. 주로 UTL_FILE, DBMS_LOB, external table 등의 패키지 또는 기능과 연계하여 사용되며, 서버 내 파일 경로를 참조할 수 있도록 보안적으로 허용된 경로만을 다룹니다.

디렉터리 객체의 필요성

  • 서버 파일 시스템에 안전하게 접근하기 위해 사용
  • 파일 입출력(예: 로그, CSV 내보내기)을 위한 경로 지정
  • 외부 테이블 사용 시 파일 위치 등록
  • PL/SQL 내 UTL_FILE 작업을 위한 파일 경로 명시

2. 주요 컬럼 설명

컬럼명 설명
DIRECTORY_NAME 디렉터리 객체의 이름 (데이터베이스 내 참조 명)
DIRECTORY_PATH 서버에서의 실제 파일 시스템 경로

3. 실무 적용 예시

ALL_DIRECTORIES 뷰에서 현재 사용자에게 접근 권한이 있는 디렉터리 목록을 조회하려면 다음 SQL을 사용합니다.

SELECT 
  directory_name, 
  directory_path 
FROM 
  ALL_DIRECTORIES;

이 결과는 PL/SQL에서 UTL_FILE.FOPEN 또는 외부 테이블을 사용할 때 지정할 수 있는 디렉터리 목록을 제공합니다.

4. 관련 시스템 뷰 비교

뷰 이름 설명 비교 항목
ALL_DIRECTORIES 사용자가 접근 가능한 디렉터리 목록 권한 있는 디렉터리만 조회
DBA_DIRECTORIES DB 전체의 디렉터리 객체 목록 모든 디렉터리를 조회 (DBA 권한 필요)
USER_DIRECTORIES 사용자가 생성한 디렉터리 목록 현재 사용자 소유의 디렉터리만 표시

5. 디렉터리 객체 생성 및 권한 부여

새로운 디렉터리 객체를 생성하려면 DBA 권한이 필요합니다.

CREATE OR REPLACE DIRECTORY data_export_dir AS '/u01/app/oracle/export';

GRANT READ, WRITE ON DIRECTORY data_export_dir TO hr;

이 설정을 통해 HR 사용자는 data_export_dir라는 이름을 통해 서버의 해당 경로에 접근할 수 있으며, 파일 읽기 및 쓰기 작업을 수행할 수 있습니다.

6. 보안 관리 시 주의사항

  • 디렉터리 객체는 외부 시스템 경로와 직접 연결되므로 보안상 최소 권한 원칙 적용이 중요
  • 접근 권한을 부여할 사용자 또는 역할을 명확하게 관리해야 함
  • 불필요한 디렉터리 객체는 주기적으로 정리하거나 폐기
  • 서버 파일 시스템 권한과 연계된 이중 보안 정책 고려

7. 활용 시나리오

  • CSV 파일 내보내기: PL/SQL로 테이블 데이터를 파일로 추출
  • 외부 테이블 로딩: 대용량 파일을 Oracle 테이블에 직접 매핑
  • 로그 기록: 배치 작업 로그를 파일로 저장

8. 결론

ALL_DIRECTORIES 뷰는 Oracle에서 외부 파일 접근을 안전하게 제어하기 위한 필수 메타데이터 도구입니다. 단순한 목록 조회 그 이상으로, 데이터베이스 보안 정책 수립, ETL 흐름 설계, 운영 자동화 스크립트 구현 등 다양한 실무 분야에서 중요한 역할을 수행합니다. 체계적인 디렉터리 객체 관리는 Oracle 환경의 안정성과 보안을 높이는 데 핵심적인 기초가 됩니다.

출처