오라클 임포트하는 방법 (oracle import / impdp) (171224수정)

오라클 임포트하는 방법 (oracle import / impdp) (171224수정)

작업 전 덤프 파일(확장자 dmp)을 준비해놓는다. 덤프는 expdp 로 한다. exp 가 아니라 expdp 로 해야 한다. (exp 로 할 경우 row개수 0인 테이블 가져오지 못하는 경우 발생했음)

— DATA_PUMP_DIR 안에 덤프파일 (ex: ose36dev.dmp)을 넣어놓는다.
— 예를 들면 C:\app\ora11\admin\orcl\dpdump 가 DATA_PUMP_DIR 위치이다.
— 정확한 DATA_PUMP_DIR 경로는 SqlDeveloper에서 알아낼 수 있다.
— SqlDeveloper 기동 – 상단메뉴의 “보기” – “DBA” 선택하면 좌측 하단에 DBA 창이 나온다. 특정 데이터베이스 접속 후, “데이터펌프” 항목 위에서 마우스 우클릭, “데이터 펌프 임포트 마법사” 선택, “다음” 누르고 잠시 기다리면, 경고창에 <메타 데이터 가져오기를 실패했습니다. 예외 사항: ORA-31640: 읽기를 위해 덤프 파일 “C:\app\ora11\admin\orcl\dpdump\EXPDAT01.DMP”을(를) 열 수 없음> 이라고 나온다. 여기에 쓰여있는 경로가 DATA_PUMP_DIR 이다.

— 오라클 아이디와 비번 아래와 같을 경우.
sytem/oracle

— 테이블 스페이스 차지하는 공간 조회
select * from sys.dba_data_files;

— 남은 공간 조회
select * from sys.dba_free_space;

— 데이터 펌프에서 쓰는 alias 들을 얻는다.
select * from dba_directories;

— 기존 테이블 스페이스 삭제한다. (기존에 생성되어 있지 않다면 이 과정은 생략해도 된다) 예를 들면 아래와 같다.
drop tablespace XFUSERS INCLUDING CONTENTS;
drop tablespace XFBRMS INCLUDING CONTENTS;
drop tablespace XFIDX INCLUDING CONTENTS;

— 리맵(remap)하기 위해, xf_users 와 xf_index 는 만들지 않는다. 리맵(remap)이란 테이블스페이스를 한 곳으로 몰아주는 것을 의미한다. (cf) remap_tablespace=xf_users:xfusers,xf_index:xfidx
— drop tablespace XF_USERS INCLUDING CONTENTS;
— drop tablespace XF_INDEX INCLUDING CONTENTS;

— 테이블 스페이스 새로 잡는다. 예를 들면 아래와 같다.
create tablespace XFUSERS datafile ‘C:\app\ora11\oradata\orcl\xfusers.dbf’ size 4096M;
create tablespace XFBRMS datafile ‘C:\app\ora11\oradata\orcl\xfbrms.dbf’ size 4096M;
create tablespace XFIDX datafile ‘C:\app\ora11\oradata\orcl\xfidx.dbf’ size 512M;

— 만약, 테이블 스페이스 변경하고 싶으면 아래와 같이 한다. (변경하고 싶지 않다면 생략)
— alter tablespace XFUSERS add datafile ‘C:\app\ora11\oradata\orcl\xfusers.dbf’ size 4096M;

— 유저 삭제
drop user ose36dev cascade;

— 유저 생성
grant connect to ose36dev identified by ose36dev;
alter user ose36dev default tablespace XF_USERS temporary tablespace TEMP;
grant resource to ose36dev;

— 임포트 하기 (cmd 창에서 수행한다)
— 리맵(remap)하여 임포트한다.
— DATA_PUMP_DIR 은 C:\app\ora11\admin\orcl\dpdump 을 가리킨다.
— 참고로 리맵(remap)하지 않으려면 명령어 뒤부분의 remap_tablespace 항목을 제거하면 된다.
impdp system/oracle dumpfile=ose36dev.dmp full=y directory=DATA_PUMP_DIR logfile=xf.log job_name=xfjob remap_tablespace=xf_users:xfusers,xf_index:xfidx

임포트가 완료될때까지 기다린다.

끝.

+ 문제해결
— (문제 생겼을 경우) 임포트 중인 job 죽이기
impdp system/oracle attach=xfjob

kill_job

이 작업을 정지하시겠습니까?([yes]:no)
yes

하면 정지된다. 처음부터 다시 시도하면 된다.