Datapump Expdp

 

1. Datapump 의 장점

- 작업 관리의 편의성

- 필요한 디스크 공간의 예측

- 원격지 DB에 작업 수행 가능

- remapping 기능 지원

 

2. 사용 전 환경 설정

- 디렉토리 생성 및 권한 설정

$mkdir /data/datapump

- scott 에게 datapump 디렉토리에 접근할 수 있는 권한 설정.

SQL> grant read,write on directory datapump to scott;

Grant succeeded.

 

- Datapump 는 기존 export 와 구분하기 위해 expdp 로, import 와 구분하기 위해 impdp 라는 명령을 사용…

 

3. expdp 실행 모드

- Full 모드

- schema 모드

- Tablespace 모드

- Table 모드

 

* Datapump 작업 모니터링

SQL>select owner_name,job_name,job_mode,state from dba_datapump_jobs;

- owner_name : 작업 계정

- job_name : 작업 명칭'

- job_mode : full, table, index, tablespace 등

- state : executing , defining, undefined, not running 등

 

4. 실습 : scott 계정의 emp, dept 테이블만 백업 받기

[oracle@server121 datapump]$ expdp scott/tiger tables=emp,dept \

directory=datapump job_name=t2 dumpfile=emp_dept2

- 주의할 점은 default temporary tablespace 가 정의 되어 있어야 한다. 그렇지 않으면 다음과 같은 오류를 발생시킨다.

- scott 계정으로 expdp 를 실행시킬 때 scott 계정의 default temporary table space 가 지정되어야 한다.

SQL>alter user scott temporary tablespace temp;

5. 실습 : scott schema 전부 백업 받기

[oracle@server121 datapump]$ expdp scott/tiger schemas=scott directory=datapump \

> dumpfile=scott01.dmp

6. 실습 : DB 전체를 백업 받기

[oracle@server121 datapump]$ expdp system/password full=y directory=datapump \

> dumpfile=full01.dmp job_name=a

- 무슨 error 발생 21:14:30 에 ……. 확인해보자

- /data/datapump/export.log 를 확인해 봅니다.

- ora-39139: Data Pump does not support XMLSchema object.

 

ORA-39139: 

Data Pump does not support XMLSchema objects. string will be skipped.

Cause:

Object has XMLSchema-based columns, which are unsupported by Data Pump.

Action:

Use the original exp and imp utilities to move this object. 

 

- 원인은 XMLSchema-based colum 들은 Datapump 를 이용해 옮길 수 없다고 한다. 그래서 export 와 import 를 이용해 옮겨야 한다고 한다.

 

7. 실습 : 일시 중단 후 다시 시작하기

- 실습을 위해 풀백업을 다시 실행

- 실행중에 ctrl +c 키로 중지 시킴

- stauts 로 datapump 의 상태와 잡의 상태를 확인합니다.

 

- sqlplus 에서도 상태를 확인할 수 있습니다.

- stop_job 명령어를 통해 일시적으로 job 을 중지 시킬 수 있습니다.

- expdp system/centos attach=system.a

- attach = owner.job_name

- start_job 명령어를 통해 다시 job 을 실행시킬 수 있습니다.

- 혹은 취소하고 싶다면 kill_job 명령어를 실행하시면 됩니다.

 

- 완료가 되면 작업이 끝난 것을 확인할 수 있습니다.

8. 실습 : 비정상적으로 종료된 job 취소하기

- 실습을 위한 상황을 만듭니다.

- 다음과 같은 오류가 난다면

1. 실제 OS 의 경로에 디렉토리가 있는지 확인

2. grant read,write on directory dp2 to scott; 으로 정확히 주었는지 확인

3. OS 상의 디렉토리 권한을 확인

4. 이것도 안되면

SQL> drop directory dp2

2 ;

Directory dropped.

SQL> create directory dp2 as '/data/dp2';

Directory created.

SQL> grant read,write on directory dp2 to scott;

Grant succeeded.


SQL>

 




- expdp 를 full=y 옵션을 주고 수행한 후 ctrl+c 로 작업을 정지 시킵니다.

- stop 을 하여 빠져 나갑니다.

- 같은 방법으로

directory=dp2 , dp3, dp4

dumpfile=full02.dmp, full03.dmp, full04.dmp

job_name=dp2,dp3,dp4

3번 더 반복해 줍니다.

9. 실습 : 여러 사용자의 테이블 한꺼번에 expdp 받기

- 다음과 같이 여러 다른 사용자들의 테이블을 한번에 받기 위하여 tables 의 인자 값을 여러 사용자의 테이블로 주게되면 다음과 같은 오류를 발생 시킵니다.

위는 scott 계정의 emp 테이블과 dpuser 계정의 tt01 테이블을 복사하려 했지만 하나의 스키마만 expdp 가능하다는 오류를 보여 줍니다.

Solution > 그냥 계정별로 하라고요~~~~~~~~~~~

 

10. 실습 : 병렬 expdp 작업 하기

$expdp system/centos full=y directory=datapump dumpfile=full04.dmp \

>job_name=a parallel=4

- 4개의 프로세스를 이용하여 작업

 

- top 명령어를 통해 확인 할 수 있습니다.

11. 실습 : 파라미터 파일 사용해서 expdp 수행

- 여러 개의 파일로 분할 expdp

$vi expdp_pump.par

Userid=system/oracle

Directory=datapump

Job_name=datapump

Logfile=expdp.log

Dumpfile=expdp_%U.dmp

Filesize=100M

Full=y

:wq

 

$expdp parfile=expdp_pump.par

 


힘들어서 오늘은 여까지 해야겠다....
ㅜㅜ 다음 이시간은 무리고 다음에....

실전! 오라클 백업과 복구
국내도서>컴퓨터/인터넷
저자 : 서진수
출판 : 생능출판사 2010.09.06
상세보기

 

+ Recent posts