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 문제 | 디렉터리 존재 및 권한 확인 |