Oracle에서 imp를 사용해 dmp 파일 임포트하기

Oracle 데이터베이스에 dmp 확장자 파일을 로드할 때는 일반적으로 impdp 또는 imp 유틸리티를 활용한다. impdp가 환경상 호환되지 않거나 사용이 어려운 경우, 전통적인 imp 도구를 대신 사용하는 것이 적합하다. 다음은 imp 명령어 기반의 데이터 임포트 절차이다.

1. 사용자 생성 (옵션)

필요 시 새로운 데이터베이스 사용자를 생성할 수 있다. 아래 문법으로 계정을 추가한다.
CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
생성된 사용자는 이후 스키마 소유자로 활용되며, 객체 저장 공간을 할당받게 된다.

2. 테이블스페이스 생성

임포트 대상 데이터를 저장할 테이블스페이스가 미리 존재하지 않으면 새로 만들어야 한다. 기존 데이터 파일 경로를 확인하려면 다음 쿼리를 실행한다.
SELECT file_name, tablespace_name FROM dba_data_files;
이를 통해 기존 저장소 위치와 디스크 용량 사용 현황을 파악한 후, 아래와 같이 새 테이블스페이스를 정의한다.
CREATE TABLESPACE 예제테이블스페이스 
  DATAFILE '/u01/oradata/xe/예제데이터.dbf' 
  SIZE 1G 
  AUTOEXTEND ON NEXT 50M 
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
디스크 여유 공간이 충분한지 반드시 사전 점검해야 한다.

3. 사용자 권한 부여

기존 사용자의 경우 특정 테이블스페이스에 대한 할당량만 조정하면 된다.
ALTER USER 사용자명 QUOTA UNLIMITED ON 테이블스페이스명;
-- 또는 고정 크기 지정
ALTER USER 사용자명 QUOTA 500M ON 테이블스페이스명;
신규 사용자에게는 기본 객체 생성 권한과 함께 리소스 접근 권한을 부여해야 한다.
GRANT CREATE SESSION TO 사용자명;
GRANT CREATE TABLE TO 사용자명;
GRANT CREATE VIEW TO 사용자명;
GRANT CONNECT, RESOURCE TO 사용자명;
GRANT UNLIMITED TABLESPACE TO 사용자명;
GRANT CREATE ANY SEQUENCE TO 사용자명;
GRANT SELECT ANY TABLE TO 사용자명;
GRANT INSERT ANY TABLE TO 사용자명;
GRANT UPDATE ANY TABLE TO 사용자명;
GRANT DELETE ANY TABLE TO 사용자명;
필요에 따라 프로시저나 뷰 생성 권한도 추가할 수 있다.

4. imp 명령어로 dmp 파일 임포트

실제 데이터 복원은 Oracle 클라이언트 명령줄 도구인 imp를 통해 수행한다. 이 명령은 SQL*Plus가 아닌 운영체제 콘솔(Windows CMD 또는 Linux Shell)에서 직접 실행해야 한다.
imp 사용자명/비밀번호 file=/path/to/data.dmp full=y ignore=y log=import.log
주요 옵션 설명:
  • full=y: 덤프 파일 내 모든 스키마 객체를 임포트
  • ignore=y: 이미 존재하는 테이블에 대해 DDL 오류를 무시하고 데이터만 삽입
  • log=import.log: 작업 기록을 로그 파일로 출력

주요 오류 및 해결 방법

1. 문자셋 불일치 경고
다음과 같은 메시지가 나타날 수 있다:
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses ZHS16GBK character set (possible charset conversion)
이는 클라이언트와 서버 간 문자 인코딩 차이에서 발생한다. 리눅스 환경에서는 세션 레벨에서 NLS_LANG 변수를 설정해 일치시키는 것이 중요하다.
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LANG=zh_CN.UTF-8
임포트 전 해당 환경변수를 설정하면 문자 깨짐 문제를 완화할 수 있다. 2. IMP-00015: 객체가 이미 존재함
이 오류는 기존에 동일 이름의 객체가 있어 생성 문이 실패했음을 의미한다. 이를 방지하려면 반드시 ignore=y 옵션을 포함해야 한다. 이 플래그가 없으면 테이블 생성 구문에서 오류가 발생해 전체 임포트가 중단될 수 있다.

태그: Oracle imp dmp 데이터 임포트 테이블스페이스

6월 9일 00:30에 게시됨