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
힘들어서 오늘은 여까지 해야겠다....
ㅜㅜ 다음 이시간은 무리고 다음에....
|
'Oracle > Backup&Recover' 카테고리의 다른 글
Clone DB && DB Link (drop table 복구) (0) | 2011.09.29 |
---|---|
Clone DB (drop table 복구) (0) | 2011.09.29 |
Export and Import (특정 Tablespace) (0) | 2011.09.28 |
Imcomplete Recovery (Table Space,Control file 백업 파일 X) (0) | 2011.09.28 |
Log Miner 에 Archive log file 등록하는 script (0) | 2011.09.27 |