1. impdp란?
Oracle 10g 이상에서 사용 가능한 가져오기 기능임. 이전의 exp에 비해 성능이 향상되어 고속으로 내보낼 수 있고, 덤프 파일의 압축화 등 다양한 기능이 추가됨
2. impdp로 dump 파일 추출하기
2-1. expdp 데이터 impdp할 DB 파일 옮기기(필요한 경우에만)
- FTP 프로그램 이용해서 옮기기 (저는 FileZilla 사용합니다)
2-2. impdp할 DB에 운영 크기 확인
- tablespace 여유공간이 부족하면 진행하다 에러 발생
select sum(bytes)/1024/1024/1024
from dba_segments
where tablespace_name = '테이블스페이스명';
- 만약 tablespace가 없다면 만들고, 용량 부족하면 늘리기
-- tablespace 신규 생성
create tablespace 테이블스페이스명 datafile '/경로/테이블스페이스파일명.dbf'
size 초기용량(100m,1g 등) autoextend [on/off] maxsize 용량;
-- tablespace 용량 추가
alter database datafile '특정파일' autoextend [on/off] maxsize 용량;
2-3. impdp 진행
- 이 명령어를 시행할 때는 한줄에 다 적어야함(중간에 ENTER가 들어가면 안됨)
[oracle@admin ~]$ impdp \'/as sysdba\' directory=dir_datapump dumpfile=impdp_dump_file.dmp logfile=impdp_dump_file.log
- parallel 있는 경우
- parallel로 export했으면 import할 때 그 파일들을 한번에 다 import해야함(ex. dumpfile=expdp_full_%U.dmp) -> 이렇게 하지 않으면 에러 발생
- export할 때 parallel=8로 줬어도 impdp할 때는 parallel=16가능
[oracle@admin ~]$ impdp \'/as sysdba\' directory=dir_datapump dumpfile=impdp_dump_file_%U.dmp
logfile=impdp_dump_file.log parallel=8
- 통계정보 제외하고(exclude=statistics) 낸 후 나중에 impdp하고 통계정보 돌리면 조금 빠름
3. parfile 사용하기
- parfile로 생성하면 길어지는 명령어를 쉽게 확인 가능
- 반복 작업 시 dump 파일명과 로그 파일명만 변경하면 쉬움
3-1. parfile 생성
[oracle@admin ~]$ vi par.impdp_DBDEV.par
directory=dir_datapump
dumpfile=impdp_dump_file.dmp
logfile=impdp_dump_file.log
...
3-2. parfile로 impdp 진행하기
[oracle@admin ~]$ impdp \'/as sysdba\' parfile=par.impdp_DBDEV.par
4. 주의할 점
- 데이터 레이아웃이 달라도 타입만 맞으면 다 들어가기 때문에 레이아웃이 맞는지 우선 확인 필요!!
- data pump는 dbms 패키지로 처리되는 거라 안죽음 -> 반드시 control c 해서 프롬프터 뜨면 kill_job해야함
5. impdp 옵션
매개변수 | 설명 |
full | 전체 데이터베이스를 가지고올 때 full=y 사용 |
schemas | 특정 스키마를 가지고올 때 사용 |
tables | 특정 테이블을 가지고올 때 사용 |
tablespaces | 특정 테이블스페이스를 가지고올 때 사용 |
remap_schema | 다른 이름의 스키마로 가지고올 때 사용 |
remap_tablespace | 다른 이름의 테이블스페이스로 가지고올 때 사용 |
매개변수 | 설명 |
directory | 추출한 파일의 저장 위치를 나타냄 directory=디렉토리명(디렉토리 위치X) |
dumpfile | 추출한 데이터 파일 이름 지정 export할 때 parallel로 했으면 import할 때 그 파일들을 한번에 다 import해야함(dumpfile명_%U.dmp) |
logfile | 추출한 데이터의 로그 파일 |
content | 대상 지정. expdp 시 필요한 내용만 추출했다면 impdp할 때 옵션 필요 없음 data_only : 테이블 데이터만 추출, metadata_only : 객체 정의, all : 객체 정의 및 데이터(기본값) |
table_exists_action | import 할 곳에 이미 정의되어있는 데이터가 존재했을 때 실행 방식 지정 truncate : 기존 데이터 truncate, replace : 기존 정의를 drop함(객체 drop), append : 기존 데이터는 그대로 두고 import, skip : 기존 정의와 데이터 그대로 두고 다음으로 넘어감 |
exclude | 제외하려는 객체 지정. |
parfile | 파라미터 파일 지정 |
nologfile | 로그 출력 여부. nologfile=NO가 기본값 |
parallel | 병렬처리. export할 때 parallel=8로 줬어도 impdp할 때는 16가능 |
'Oracle' 카테고리의 다른 글
[Oracle] Table과 Index의 Tablespace 옮기기 (0) | 2025.05.05 |
---|---|
[Oracle] DBLink를 이용한 impdp 사용하기 (0) | 2025.05.04 |
[Oracle] 데이터 이동 Datapump expdp로 dump file 추출하기 (0) | 2025.05.04 |
[Oracle] 오라클 데이터베이스 초기화 파라미터 (1) | 2025.05.03 |
[Oracle] spfile에서 pfile로 복사해서 비교하기 (0) | 2025.05.03 |