Oracle Data Pump(EXPDP/IMPDP)를 사용하는 중 "ORA-31603" 오류가 발생했다면?

많은 분들이 당황하셨을 텐데요 😅
오늘은 이 에러의 정확한 원인과 실전 해결법을 알려드릴게요!


✅ ORA-31603 오류란?

📌 오류 메시지 예시

ORA-31603: object "EMPLOYEES" of type TABLE not found in schema "HR"


📌 :
👉 지정한 객체(object) (예: 테이블, 프로시저 등)가
👉 지정한 스키마(schema) 내에 존재하지 않아 발생하는 오류입니다.


🔍 자주 발생하는 원인 TOP 4

1️⃣ 대상 객체가 실제로 존재하지 않음

  • 가장 흔한 원인입니다.
  • 지정한 테이블이나 프로시저가 해당 스키마에 존재하지 않거나 이름이 다를 경우 발생합니다.

💡 해결방법

SELECT object_name, object_type
FROM all_objects
WHERE owner = 'HR'
AND object_name = 'EMPLOYEES';
  • 존재 여부를 꼭 확인하세요.


2️⃣ 객체 이름의 대소문자 오류

Oracle은 기본적으로 객체 이름을 대문자로 저장하지만,
덤프 파일이 "Employees"처럼 쌍따옴표와 소문자를 포함하고 있다면
IMPORT 시 정확히 일치하는 이름을 지정해야 합니다.

💡 예시

impdp hr/hr tables='"Employees"'


3️⃣ 스키마 또는 사용자 지정 오류

SCHEMAS= 또는 REMAP_SCHEMA= 옵션을 사용할 때
스키마 이름을 잘못 지정했거나
현재 사용자가 해당 스키마를 참조할 권한이 없는 경우에도 발생합니다.

💡 확인 방법

SELECT username FROM dba_users WHERE username = 'HR';


4️⃣ 디렉터리 오브젝트 권한 문제

Data Pump는 DIRECTORY= 옵션을 사용합니다.
이 디렉터리 오브젝트에 대한 READ, WRITE 권한이 없으면 오류가 날 수 있습니다.

💡 해결 방법

-- 디렉터리 권한 부여
GRANT READ, WRITE ON DIRECTORY dump_dir TO hr;

-- 디렉터리 존재 확인
SELECT * FROM dba_directories WHERE directory_name = 'DUMP_DIR';


💬 실제 에러 해결 예시

-- 에러 발생 명령어
impdp hr/hr tables=employees directory=dump_dir dumpfile=emp.dmp

-- 해결된 명령어
impdp hr/hr tables='"EMPLOYEES"' directory=dump_dir dumpfile=emp.dmp


  • 실제 테이블이 따옴표 포함 대소문자("EMPLOYEES")로 덤프되었기 때문에, 정확히 일치시켜야 오류 없이 IMPORT됩니다.


📝 마무리 요약

원인해결 방법
❌ 객체 없음ALL_OBJECTS 또는 DBA_OBJECTS로 존재 여부 확인
🔠 대소문자 불일치"ObjectName" 정확히 입력
🔐 권한 부족GRANT로 권한 부여
📂 DIRECTORY 문제디렉터리 존재 및 권한 확인