1. command line 에서 expdp 사용
결과물을 저장할 디렉토리를 지정한다.
SQL> create directory data_pump_test as '/home/oracle/data_pump_test/';
SQL> grant read, write on directory data_pump_test to hr; 사용자에게는 EXP_FULL_DATABASE, IMP_FULL_DATABASE 롤을 부여한다.
실제로는 resouce 롤만으로도 기본적인 expdp, impdp 동작을 수행할 수 있다.
expdp 실행
# expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp - interactive command line
expdp 진행 중에 컨트롤+C 키를 누르면 Export> 프롬프트가 뜬다.
여기서 help를 타이핑하면 사용할 수 있는 명령들을 확인할 수 있다. data_pump_test 디렉토리에 생성된 export.log 파일의 내용을 확인한다. ※ {exclude|include} object_type[: "name_expr"]
ex)
- # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp exclude=index:"like 'EMP%'"
- # expdp hr/hr directory=data_pump_test dumpfile=test_dump.dmp include=view
exclude는 해당 오브젝트를 제외하고 추출/입력
include는 해당 오브젝트만을 추출/입력
contents={all | metadata_only | data_only}
2. 병렬 처리
parallel 파라메터는 몇 개의 스레드로 병렬 처리 할 것 인지 지정한다.
# expdp hr/hr tables=paratest directory=data_pump_test dumpfile=paratest%U.dmp parallel=3 job_name=parr_test;
paratest01.dmp, paratest02.dmp, paratest03.dmp 세 개의 파일이 생성된다.
# impdp hr/hr directory=data_pump_test dumpfile=paratest%U.dmp job_name=parr_test;
실행 예
SQL> create user dpumpuser identified by dpumpuser;
SQL> grant connect, resource, exp_full_database, imp_full_database to dpumpuser;
SQL> create directory data_pump as '/home/oracle/data_pump';
SQL >grant read, write on directory data_pump to dpumpuser;
$ expdp dpumpuser/dpumpuser full=y directory=data_pump dumpfile=20081030.dmp
$ impdp dpumpuser/dpumpuser directory=data_pump dumpfile=20081030.dmp
SQL> revoke read, write on directory data_pump from dpumpuser;
SQL> revoke connect, resource, exp_full_database, imp_full_database from dpumpuser;
SQL> drop directory data_pump;
SQL> drop user dpumpuser;
※ 만약 impdp 가 퍼미션 문제로 실행되지 않는다면 SYSDBA 로 로그인한 후,
SQL> execute dbms_metadata_util.load_stylesheets;
을 실행한 후 재시도.
특정 스키마의 구조와 데이터 추출
$expdp dpumpuser/dpumpuser schema=PORTAL directory=data_pump dumpfile=portal_schema_20081031.dmp
content를 사용해 특정 스키마의 데이터만 추출 (all | metadata_only | data_only)
$expdp dpumpuser/dpumpuser schemas=PORTAL content=data_only directory=data_pump dumpfile=portal_schema_data_20081031.dmp
table_exists_action 옵션 사용, 기존의 데이터를 truncate 하도록 (skip | append | truncate | replace)
skip - 존재하는 오브젝트에 대해 임포트 스킵
append - 기존 오브젝트에서 업는 행만을 임포트
truncate - 기존 테이블 truncate
replace - drop & recreate
$ impdp dpumpuser/dpumpuser table_exists_action=truncate directory=data_pump dumpfile=portal_schema_data_20081031.dmp
데이터 파일, 테이블 스페이스, 유저는 각각 다음의 옵션으로 변경할 수 있다.
REMAP_DATAFILE=’C:\user01.dbf’:’/usr/data/user01.dbf’
REMAP_TABLESPACE=’users’:’user’
REMAP_SCHEMA=scott:stralth
다음 옵션으로 expdp에 사용되는 공간을 추정할 수 있다.
estimate_only=Y
$ expdp dpumpuser/dpumpuser full=y estimate_only=Y
'Database > ORACLE' 카테고리의 다른 글
SQL PROMPT 지정하기 ~ (0) | 2009.03.08 |
---|---|
FLASHBACK TABLE (삭제된 테이블 복구하기) (0) | 2009.03.08 |
Oracle Database 10g: The Top 20 Features for DBAs (0) | 2009.03.08 |
[10g 신기능] 자동 퍼포먼스 통계(AWR:Automatic Workload Repository) (0) | 2009.03.08 |
ORACLE EM Configuration (0) | 2009.03.08 |