SYSTEM 계정으로 특정 일반 스키마를 export했을 때와 일반 계정 자체로 export했을 때의 차이를 말씀하시는 거군요.
상황 정리
SYSTEM 계정으로 일반 스키마 export:
expdp system/password SCHEMAS=일반계정명 DIRECTORY=pump_dir DUMPFILE=파일명.dmp
→ import 시 일반계정이 자동 생성됨
일반 계정으로 자신의 스키마 export:
expdp 일반계정/password DIRECTORY=pump_dir DUMPFILE=파일명.dmp
→ import 시 계정이 없으면 오류 발생
원인
이는 export 권한과 메타데이터 포함 범위의 차이입니다:
SYSTEM으로 export 시:
- EXP_FULL_DATABASE 권한으로 스키마 전체 정보 접근
- 사용자 생성 DDL까지 포함하여 export
- Data Dictionary에서 사용자 정보까지 추출
일반 계정으로 export 시:
- 자신의 객체만 export 가능
- 사용자 생성 권한이 없어 DDL에 CREATE USER 문이 포함되지 않음
- 객체만 export되고 스키마 생성 정보는 제외
해결방안
가장 간단한 방법:
-- import 전에 대상 DB에서 계정 생성 CREATE USER 계정명 IDENTIFIED BY 패스워드; GRANT CONNECT, RESOURCE TO 계정명; GRANT UNLIMITED TABLESPACE TO 계정명;
또는 SYSTEM 계정으로 import 수행:
impdp system/password DIRECTORY=pump_dir DUMPFILE=파일명.dmp REMAP_SCHEMA=원본계정:대상계정
이것이 Oracle Data Pump의 설계된 동작 방식입니다.