본문 바로가기

oracle

[ORACLE] EXPDP 사용방법 및 옵션

728x90

● datapump 사용 사전 설정

  1. 디렉토리 오브젝트 생성
SQL>create directory 'EXPDUMP'  as '/dump';

  2. 권한 부여
SQL> grant read, write on directory 'EXPDUMP' to 'scott';
SQL> grant exp_full_database, imp_full_database  to 'scott';

  3. 데이터 펌프 수행
$ expdp scott/tiger DIRECTORY=EXPDUMP LOGFILE=test_dump.log FULL=y
 


● Data Pump Option

 
-  USER/PW : 데이터베이스 유저 및 비밀번호

- DIRECTORY : DATAPUMP FILE을 저장하는 디렉토리

- DUMPFILE : DATAPUMP에 의해 생성 될 DUMPFILE 이름

- LOGFILE : DATAPUMP에 의해 생성 될  LOGFILE 이름

- FULL : DATABASE 전체를 EXPORT 여부 결정  YES/NO (default : NO)

- SCHEMAS - SCHEMA가 소유한 objects 를 EXPORT 

- TABLES - 명시 된 TABLE 에 대해서만 EXPORT

 EX> PARTITION TABLE EXPORT
$ expdp scott/tiger DIRECTORY=EXPDUMP LOGFILE=test_dump.log FULL=y PARALLEL=4 DUMPFILE=test_dump%U.dmp tables=scott.emp:emp_202301

- TABLESPACES - 명시된 TABLESPACE에 저장된 OBJECT 에 대해 EXPORT

- PARALLEL : 데이터 펌프 작업시 병렬 프로세스의 개수를 지정하는 옵션
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP LOGFILE=test_dump.log FULL=y PARALLEL=4 DUMPFILE=test_dump%U.dmp  
<dumpfile 생성 예>
/export/test_dump01.dmp
/export/test_dump02.dmp
/export/test_dump03.dmp
/export/test_dump04.dmp

- COMPRESSION : EXPORT 값을 압축하여  dmpfile size 을 감소 시킴
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP DUMPFILE=test_dump.dmp   LOGFILE=test_dump.log FULL=y compression=DATA_ONLY

1. ALL : DATA, METADATA 모두를 압축함(압축 효과 큼)
2. DATA_ONLY : DATA만 압축함 (압축 효과 큼)
3. METADATA_ONLY : METADATA_ONLY (압축효과 비교적 적음) 
4. NONE : COMPRESSION 하지 않음

- COMPRESSION_ALGORITHM : 압축 알고리즘을 정하여 압축 성능을 정함

1. compression_algorithm=basic:  CPU 사용률이 크지 않으며 압축률도 좋음
2. compression_algorithm=high: CPU 사용률이 제일 높지만 압축률이 제일 좋음 
3. compression_algorithm=medium:  basic 과 비슷함
4. compression_algorithm=low:  CPU 사용률이 제일 적고 압축률은 않좋음

- EXCLUDE : EXPDP 작업에서 제외 될 object or  schema 이름을 명시하는 옵션
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP DUMPFILE=test_dump.dmp   LOGFILE=test_dump.log FULL=y parfile=test.par
(parfile 내용)
exclude=table:"IN('EMP','TEST')" 
exclude=schema:"IN('SYS', 'SYSTEM')"

- INCLUDE : EXPDP 작업에서 포함 될 object or  schema 이름을 명시하는 옵션
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP DUMPFILE=test_dump.dmp  LOGFILE=test_dump.log  parfile=test.par
(parfile 내용)
include=table:"IN('EMP','TEST)" 
include=schema:"IN('SYS', 'SYSTEM')"

- PARFILE : 지정된 파일에 원하는 옵션을 설정한 후 EXPORT 하는 기능
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP DUMPFILE=test_dump.dmp  LOGFILE=test_dump.log  parfile=test.par
(parfile 내용)
include=table:"IN('EMP','TEST)" 
include=schema:"IN('SYS', 'SYSTEM')"

- CONTENT

1. ALL : DATA & METADATA 모두 포함하여 EXPORT/IMPORT 함
2. METADATA_ONLY : METADATA 만  포함하여 EXPORT/IMPORT 함 
3. DATA_ONLY : DATA  포함하여 EXPORT/IMPORT 함
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP DUMPFILE=test_dump.dmp  LOGFILE=test_dump.log  parfile=test.par content=metadata_only

- ESTIMATE_ONLY

DUMPFILE 을 생성 하지 않고 예상 작업 내용을 확인 가능 하다.
EX>
$ expdp scott/tiger DIRECTORY=EXPDUMP   LOGFILE=test_dump.log  estimate_only=y

- TABLE_EXISTS_ACTION = (OPTION)

1. SKIP - 동일 이름의 테이블이 존재할 경우 해당 테이블은 SKIP 
2. APPEND - 동일 이름의 테이블이 존재할 경우 데이터를 해당 테이블에 추가 적재
3. REPLACE - 동일 이름의 테이블이 존재할 경우 해당 테이블을 재생성 후 데이터 적재
4. TRUNCATE - 동일 이름의 테이블이 존재할 경우 해당 테이블의 데이터를 TRUNCATE 후 데이터 적재


EXPDP/IMPDP DICTIONRARY VIEW

1. DBA_DATAPUMP_JOBS - 수행 및 중단 중인 DATAPUMP 작업에 대한 정보 확인
2. DBA_DATAPUMP_SESSIONS - DATAPUMP 작업을 수행시키는 세션에 대한 정보 확인

 

●  EXPDP, IMPDP JOB KILL 방법

SQL>select * from dba_datapump_jobs;

OWNER_NAME JOB_NAME             OPERATION JOB_MODE STATE     DEGREE ATTACHED_SESSIONS
---------- -------------------- --------- -------- --------  ------
-----------------
SYSTEM     SYS_EXPORT_SCHEMA_01 EXPORT    SCHEMA   NOT RUNNING 1    

1. Get the job name from the output.

SYS_EXPORT_SCHEMA_03

2. Attached the job with following parameter.

$ expdp scott/tiger attach=SYS_EXPORT_FULL_01

 
3. Check the status of the job.

Export> expdp status

4. Stop or kill the job running.

Export> KILL_JOB
Are you sure you wish to stop this job ([yes]/no): yes

5. 만약에 dmp 파일이 삭제 되거나 오래된 job 삭제 방법

- JOB_NAME 확인
SQL>select * from dba_datapump_jobs;

- JOB_NAME 으로 된 테이블 확인 
SQL> select * from dba_tables where table_name='SYS_EXPORT_SCHEMA_01';

- JOB_NAME 으로된 테이블 삭제
SQL> DROP TABLE SCOTT.SYS_EXPORT_SCHEMA_01 PURGE;

- 제거 됨을 확인 

SQL>select * from dba_tables where table_name='SYS_EXPORT_SCHEMA_01';
SQL>select * from dba_datapump_jobs where job_name='SYS_EXPORT_SCHEMA_01';

 

728x90