728x90
출처: Oracle 데이터 이동 Datapump(expdp, impdp) 사용하기(1) (tistory.com)
Datapump
오라클 9i에서는 Export(exp)와 Import(imp) 유틸리티를 사용해서 데이터 이동을 했었는데, 10g부터는 Datapump를 사용해서 기존 유틸리티보다 빠르게 작업을 할 수 있다. 하지만 적은 양의 데이터를 이동시킬때는 Export와 Import 유틸리티가 더 빠르다.
그리고 Datapump는 오라클 서버단에서 제어 되는 툴로, Directory 객체를 생성하여 사용하고 export/import 작업을 진행하는 유저에게 해당 객체에 대해 읽기, 쓰기 권한을 부여해야 한다.
![](https://blog.kakaocdn.net/dn/bS0gOt/btsA3Q2BAwR/oYUTNz6k1MBFPP0NAxwjaK/img.png)
- 데이터를 이동할 때 사용하는 유틸리티이다.
- 운용/개발 서버 또는 운용/복구 서버를 따로 두어 개발하고, 복구 완료 후 운용 서버로 데이터를 옮긴다.
- DB가 Open 되어 있을 때만 사용 가능하다.
- 다른 기종의 플랫폼 또는 다른 버전의 오라클 간에도 이동 가능하다.
- 작업시 Temporary Tablespace를 사용하므로 용량이 큰 작업의 경우엔 Temporary Tablespace 크기를 크게 하여 미리 준비한다.
- EXPORT는 SELECT - 데이터 딕셔너리를 select 해야 데이터를 가져올 수 있기 때문
- IMPORT는 DML, DDL - target DB에 dump file 이동(create table, insert value 등)
- (9i) export/import 유틸리티 제공 : $exp, $imp
- (10g) data pump 유틸리티 제공 : $expdp, $impdp
Datapump 실습
OS 환경 : Oracle Linux 6.3
DB 환경 : Oracle Database 12.1.0.2
SID : PROD, testdb 간의 데이터이동
1. 이동할 데이터의 파일 디렉토리 생성
[testdb@host01 ~]$ mkdir -p /home/oracle/prod/datapump
2. 디렉토리 객체 생성
PROD> sqlplus / as sysdba
PROD> startup
PROD> create directory prod_dir as '/home/oracle/prod/datapump';
디렉토리 객체가 잘 생성되었는지 확인한다.
select directory_name, directory_path
from dba_directories
where directory_name='PROD_DIR';
![](https://blog.kakaocdn.net/dn/bNXV2O/btsA9iDoNbO/CAgWvYVm94cQBkhTNwMKi0/img.png)
3. 권한 부여
PROD> grant read, write on directory prod_dir to sh, hr, scott;
*권한 부여하기 전 유저 계정 lock 해제
PROD> alter user &a identified by &b account unlock;
![](https://blog.kakaocdn.net/dn/9WtS3/btsA4QOJVHo/FeqdowzhA4eyt7MUYQP8kK/img.png)
![](https://blog.kakaocdn.net/dn/uY1br/btsA0bfiQk4/ZoaGNAX2pcU5QWGkvsg5d0/img.png)
![](https://blog.kakaocdn.net/dn/cFF2Ma/btsA8MEBM8K/3nQJt05pskAeOcOkqQBAgK/img.png)
4. export 작업
[PROD@host01 ~]$ expdp scott/tiger dumpfile=scott.dmp directory=prod_dir tables=emp,dept
![](https://blog.kakaocdn.net/dn/c7FSFH/btsAZ9PkUpH/1GH1VwXZePwka6ZfalETuk/img.png)
dumpfile이 잘 생성 되었는지 확인한다.
[PROD@host01 ~]$ ls /home/oracle/prod/datapump
![](https://blog.kakaocdn.net/dn/P3Rhz/btsA9fNqUrJ/toYQiKH5PUhSleT6BkHei0/img.png)
생성된 dumpfile 확인해보면 읽기 어려운 형태로 되어 있다.
[PROD@host01 ~]$ vi /home/oracle/prod/datapump/scott.dmp
![](https://blog.kakaocdn.net/dn/XKbgf/btsA214pcmJ/FQuwmNRtW9tTZ4LNqddXG0/img.png)
5. import 작업
[testdb@host01 ~]$ impdp system/oracle_4U dumpfile=scott.dmp directory=prod_dir
![](https://blog.kakaocdn.net/dn/usZ2l/btsA8pW44mb/GtzkXEJdpSitXQnSbQoUjk/img.png)
shared memory가 부족하다는 오류가 발생했다.
![](https://blog.kakaocdn.net/dn/FQp2Q/btsA3PP95EE/fZXXCYLCKaBBt7PXiQPwX1/img.png)
SGA 메모리 크기를 확인해본다.
![](https://blog.kakaocdn.net/dn/b7pSFN/btsA7uxIzej/ziFMRqfQqElILZ6KqhC01K/img.png)
SGA 메모리 크기를 늘려준다.
[testdb@host01 ~]$ impdp system/oracle_4U dumpfile=scott.dmp directory=prod_dir
![](https://blog.kakaocdn.net/dn/KsNfQ/btsA26EyBvm/FqLWkToP6gF0t0JVGs53wK/img.png)
다시 import를 수행하니까 성공적으로 완료되었다.
728x90
'정보관리(데이터베이스, DB) > 오라클' 카테고리의 다른 글
[Oracle] 계정 및 테이블스페이스 생성 (0) | 2023.11.29 |
---|---|
오라클 sysdba export (0) | 2023.11.29 |
[Oracle] 리스너(Listener) 란? (0) | 2023.11.29 |
ORACLE XE에서 8080 PORT 포트번호 변경방법, 톰캣 충돌 시 해결방법 (1) | 2023.11.29 |
오라클 character set 확인 및 변경 (0) | 2023.11.29 |