
Oracle 데이터베이스에서 DBA_EXP_OBJECTS 뷰는 데이터베이스 Export 작업 시 내보내기에 포함되는 객체(Object)에 대한 정보를 제공하는 핵심적인 데이터 사전 뷰입니다. 이 뷰는 Data Pump Export(Expdp) 및 기존의 EXP 유틸리티 작업 시 어떤 스키마, 객체, 타입, 소유자 등이 Export 대상에 포함되는지를 관리하고 추적하는 역할을 수행합니다. 즉, 데이터베이스 내에서 Export 가능한 모든 객체의 목록과 그 속성을 보여주는 ‘메타 관리(Metadata Management)’ 뷰라고 할 수 있습니다.
1. DBA_EXP_OBJECTS 개요
DBA_EXP_OBJECTS는 Oracle Database의 Export 메커니즘을 지원하기 위해 만들어진 시스템 뷰입니다. 이 뷰에는 Export 가능한 객체의 유형(Type), 이름(Name), 스키마(Schema), 종속 관계(Dependency) 등이 기록되며, Data Pump가 Export 작업을 수행할 때 내부적으로 참조하여 어떤 순서로, 어떤 의존성을 기준으로 객체를 내보낼지를 결정합니다.
즉, 이 뷰는 단순한 리스트를 넘어서, Export 프로세스의 로직을 관리하는 메타 데이터 뷰로 이해할 수 있습니다.
2. DBA_EXP_OBJECTS의 역할과 특징
- Export 대상 객체 관리: 모든 Export 가능한 객체 유형(테이블, 인덱스, 뷰, 시퀀스 등)을 포함.
- 종속성 분석: 특정 객체가 다른 객체에 의존하는 경우(예: 인덱스 → 테이블), Export 순서 결정.
- Data Pump 내부 처리 기준: 객체 Export 순서, 스키마 범위, 및 객체 관계 설정에 활용.
- 전체 시스템 범위 확인: DBA 권한을 가진 사용자가 시스템 전체 객체 Export 가능성을 모니터링.
3. 주요 컬럼 설명
다음 표는 DBA_EXP_OBJECTS 뷰의 주요 컬럼과 그 의미를 정리한 것입니다.
| 컬럼명 | 데이터 타입 | 설명 |
|---|---|---|
| OWNER | VARCHAR2 | Export 대상 객체의 소유자 (스키마 이름) |
| OBJECT_NAME | VARCHAR2 | Export 대상 객체의 이름 |
| OBJECT_TYPE | VARCHAR2 | 객체 유형 (TABLE, VIEW, INDEX, SEQUENCE, PACKAGE 등) |
| CREATED | DATE | 객체가 생성된 날짜 |
| LAST_DDL_TIME | DATE | 해당 객체의 마지막 DDL(변경, 수정) 작업 시각 |
| STATUS | VARCHAR2 | 객체의 유효 상태 (VALID / INVALID) |
| OBJECT_ID | NUMBER | Oracle 내부적으로 객체를 식별하기 위한 고유 ID |
이 컬럼들은 DBA가 Export 시 어떤 객체가 내보내기 가능한지, 또는 특정 객체가 Export 대상에서 제외되어야 하는지를 판단하는 근거가 됩니다.
4. DBA_EXP_OBJECTS 조회 예제
다음 SQL 예제는 현재 데이터베이스에서 Export 가능한 주요 객체 목록을 확인하는 방법입니다.
SELECT
OWNER,
OBJECT_NAME,
OBJECT_TYPE,
STATUS,
CREATED,
LAST_DDL_TIME
FROM
DBA_EXP_OBJECTS
ORDER BY
OWNER, OBJECT_TYPE, OBJECT_NAME;
이 쿼리는 Export 대상 객체의 스키마별, 유형별, 이름 순으로 정렬된 결과를 보여줍니다. 유효하지 않은(INVALID) 객체가 존재할 경우 Export 시 오류가 발생할 수 있으므로, 사전에 이 뷰를 점검하는 것이 안정적인 백업 및 마이그레이션에 매우 중요합니다.
5. DBA_EXP_OBJECTS와 관련된 주요 뷰 비교
Oracle에는 객체 관리와 Export 작업을 지원하는 여러 데이터 사전 뷰가 존재합니다. 아래 표는 DBA_EXP_OBJECTS와 다른 관련 뷰의 차이점을 정리한 것입니다.
| 뷰 이름 | 역할 | DBA_EXP_OBJECTS와의 관계 |
|---|---|---|
| DBA_EXP_OBJECTS | Export 가능한 객체 정보 관리 | Data Pump Export의 대상 객체 목록 제공 |
| DBA_OBJECTS | 데이터베이스 내 모든 객체 정보 | DBA_EXP_OBJECTS는 이 뷰를 기반으로 Export 가능한 항목만 필터링 |
| DBA_DATAPUMP_JOBS | Data Pump 작업 상태 및 로그 정보 | DBA_EXP_OBJECTS의 객체 정보를 실제 Job 실행과 연결 |
| DBA_EXP_FILES | Export 파일의 생성 및 저장 경로 정보 | DBA_EXP_OBJECTS의 Export 결과 파일을 관리 |
6. DBA_EXP_OBJECTS 활용 사례
① Export 작업 전 유효성 점검
DBA_EXP_OBJECTS는 Export 이전에 객체의 상태를 점검하는 데 활용됩니다. 예를 들어, INVALID 상태의 객체가 존재하면 Data Pump Export 시 오류가 발생할 수 있으므로, 다음 쿼리로 유효성 검증을 수행합니다.
SELECT
OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS
FROM
DBA_EXP_OBJECTS
WHERE
STATUS = 'INVALID';
이 결과를 바탕으로 유효하지 않은 객체를 ALTER ... COMPILE 명령을 통해 재컴파일해야 합니다.
② Export 대상 필터링
특정 스키마의 테이블만 Export 대상에 포함하고 싶을 때도 이 뷰를 활용할 수 있습니다.
SELECT
OBJECT_NAME
FROM
DBA_EXP_OBJECTS
WHERE
OWNER = 'HR'
AND OBJECT_TYPE = 'TABLE';
이 결과를 Data Pump의 INCLUDE 파라미터로 활용하면, 불필요한 객체를 제외하고 필요한 데이터만 Export할 수 있습니다.
③ 객체 변경 이력 확인
DBA_EXP_OBJECTS의 LAST_DDL_TIME을 활용하면 Export 직전에 변경된 객체를 추적할 수 있습니다.
SELECT
OWNER, OBJECT_NAME, OBJECT_TYPE, LAST_DDL_TIME
FROM
DBA_EXP_OBJECTS
WHERE
LAST_DDL_TIME > SYSDATE - 1;
이 쿼리는 지난 24시간 이내에 변경된 객체를 확인하여, Export 전 백업이 필요한 대상을 선별하는 데 유용합니다.
7. DBA_EXP_OBJECTS의 내부 동작 메커니즘
Oracle은 Export 작업을 수행할 때 내부적으로 Dependency Tree를 구축합니다. 이 트리 구조는 객체 간의 관계(예: 뷰 → 테이블, 트리거 → 테이블 등)를 기반으로 구성되며, DBA_EXP_OBJECTS 뷰는 이 정보를 기준으로 Export 순서를 결정합니다.
예를 들어 다음과 같은 순서로 Export가 진행됩니다:
- 기본 객체: TABLE, SEQUENCE 등
- 종속 객체: INDEX, TRIGGER, CONSTRAINT
- 뷰(View) 및 SYNONYM
- PL/SQL 객체: PACKAGE, FUNCTION, PROCEDURE
이처럼 Oracle은 내부적으로 DBA_EXP_OBJECTS의 데이터를 활용하여 객체 간의 종속성을 해석하고 올바른 Export 순서를 보장합니다.
8. DBA_EXP_OBJECTS를 이용한 Export 로그 분석
Data Pump Export 작업이 완료된 후, 생성된 로그 파일의 Export 객체 정보와 DBA_EXP_OBJECTS의 데이터를 비교하면 Export 과정의 누락 여부나 오류를 빠르게 검증할 수 있습니다.
SELECT
OBJECT_NAME, OBJECT_TYPE
FROM
DBA_EXP_OBJECTS
WHERE
OWNER = 'SALES'
AND OBJECT_NAME NOT IN (
SELECT OBJECT_NAME FROM DBA_DATAPUMP_LOG_TABLE WHERE JOB_NAME = 'SALES_EXPORT_JOB'
);
이 쿼리는 특정 Export Job에서 누락된 객체를 추적하는 데 사용됩니다.
9. DBA_EXP_OBJECTS 활용 요약 비교표
| 항목 | DBA_EXP_OBJECTS | DBA_OBJECTS |
|---|---|---|
| 역할 | Export 가능한 객체 목록 관리 | 데이터베이스의 전체 객체 관리 |
| 활용 시점 | Export 수행 전 또는 도중 | 일반적인 객체 관리 및 조회 시 |
| 컬럼 주요 정보 | OBJECT_TYPE, STATUS, LAST_DDL_TIME | OBJECT_TYPE, CREATED, STATUS |
| 적용 범위 | Data Pump / Export 대상 | 모든 데이터베이스 객체 |
| 관리자 권한 필요 여부 | DBA 권한 필요 | 모든 사용자 사용 가능 (USER_OBJECTS) |
10. 결론
DBA_EXP_OBJECTS는 Oracle의 Export 메커니즘을 이해하고 관리하기 위한 필수 뷰입니다. 데이터베이스 백업, 마이그레이션, 아카이빙 등 다양한 환경에서 Export 대상 객체의 구조와 상태를 미리 점검하고 최적화할 수 있습니다.
DBA_EXP_OBJECTS를 정기적으로 점검하면 Data Pump Export의 안정성과 신뢰성을 확보할 수 있으며, 특히 객체 상태(VALID/INVALID)와 마지막 변경 이력을 확인함으로써 데이터 무결성과 백업 품질을 동시에 보장할 수 있습니다.
출처
- Oracle Database Reference 19c – DBA_EXP_OBJECTS View
- Oracle Data Pump Utilities Guide
- Oracle Database Concepts – Object Management and Export