- yagom's blog
- 배움에 길에는 끝이 없다.
- Naked Foot
- SAP PP
- SAP ABAP
- SAP BSP
- SAP Inside
- 자바지기
- SECRET OF KOREA
- X-Mobile User Interface World
- 대한민국 자식연합
- 대한민국 토리스토리
- Malus domestica
- PCPINSIDE(거리로 PC, 거실로 PC)
- My Eyes on You
- 조대협의 블로그
- 릴리펏's Logbook
- Dr. Ann(닥터앤)의 DB이야기
- 디지털을 말한다. By oojoo
- Slow Adopter
- T.B 의 SNS 이야기
- Sense and Sensibility
- 언제나 Burning~
- 바스토프의 세상이야기
- Edu&Story
- Min.Gun
- freestation
- nigh
- Programmer
- Shine A Light
- 하루 벌어 하루 살아요. ㅋㅋ
- 아이캐리즈
- 오라클 성능 문제에 대한 통찰 - 조동욱
- 에너쓰오라클
- Science of DataBase
- 기억을 글로 담기
- 홍기선's 아키텍트 이야기 그리고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- semi join
- data pump
- cluster table
- RBM
- JDBC
- A2P
- OUTER JOIN
- AWS Elastic Beanstalk
- zero rating
- MSSQL SQL
- Analytic Function
- ERP
- oracle tuning
- index-organized table
- ORACLE SQL
- MTBF
- oracle
- EA
- Annualized Failure Rate
- 스폰서 요금제
- aws
- tuning
- Mean Time Between Failures
- ansi query
- Database
- Network Neutrality
- Table
- PostgreSQL
- nested loops join
- java
- Today
- Total
아이짱구
Oracle expdp/impdp Utility 본문
Data Pump
Oracle 10g의 기능인 Data Pump는 Oracle Database Data와 Meta Data의 이동을 위한 DBMS_DATAPUMP 패키지를 통하여 상당히 빠른 Data Pump Infrastructure를 제공하고 있다. 기존 Oracle 9i까지 사용되던 exp, imp 유틸리티보다 더욱더 향상된 성능을 제공한다.
Data Pump는 exp/imp 유틸리티에 비해 많은 기능을 제공하며, 대량의 데이터를 작업 할 때 빠르게 작업할 수 있다.
1. expdp
* DBA 권한 이상으로 로그인
CONNECT /as sysdba
* 디렉토리 조회
SQL> SELECT d.owner, directory_name, grantee, privilege, directory_path
FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name;
* 디렉토리 추가
-- 기존 디렉토리 dpump_dir2 drop
SQL> DROP DIRECTORY dpump_dir2;
-- /backup/dpump 디렉토리 dpump_dir2 생성
SQL> CREATE OR REPLACE DIRECTORY dpump_dir2 AS '/backup/dpump';
* 디렉토리에 대한 권한 설정
SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir2 TO 사용자;
* EXP_FULL_DATABASE, IMP_FULL_DATABASE 권한 부여
SQL> GRANT EXP_FULL_DATABASE, IMP_FULL_DATABASE TO MESS_ADM;
* expdp
# expdp system/1239 DIRECTORY=dpump_dir2 schemas=MESS_ADM \
DUMPFILE=MESS_ADM_20081223.dmp logfile=MESS_ADM_20081223.log
# expdp SYSTEM/1239 DIRECTORY=DPUMP_DIR2 DUMPFILE=expdp_alldata_0106.dmp \
LOGFILE=expdp_alldata_0106.log PARFILE=expdp.par CONTENT=DATA_ONLY
# expdp system/1239 DIRECTORY=dpump_dir2 tables=MESS_ADM.TB_ABC110 \
DUMPFILE=tb_ABC110_20100601.dmp logfile=tb_ABC110_20100601.log \
CONTENT=DATA_ONLY
expdp(또는 impdp) 작업 진행 중 Control+C를 누르면 export> 프롬프트(또는 import> 프롬프트) 상태가 된다. Control+C에 의해 작업이 중단 되는 것은 아니며, Interactive Mode로 변경되어 expdp(또는 impdp) 작업을 모니터링하고 제어 가능하다.
* Interactive Mode에서 사용할 수 있는 명령어
- STATUS: 현재 작업 진행 정도 확인 가능
- CONTINUE_CLIENT: 다시 원래 모드로 돌아감
- KILL_JOB: 작업 프로세스 종료
- STOP_JOB: 작업 중지
- 나머지 명령어는 HELP 참고
* expdp 주요 파라미터
파라미터 | 의미 | 사용 예 |
filesize | 한 파일의 최대 크기로 분할해서 받을 때 사용 bytes, kilobytes, megabytes, gigabytes | filesize=100megabytes |
parfile | 파라미터 파일 | parfile=file.par |
logfile/nologfile | 작업 로그 저장할 파일 | logfile=explog.log |
compression | 메타 데이터 압축 11g에서는 all 옵션 추가 metadata_only, none, all | compression=all |
content | expdp 작업시 어떤 내용을 포함 all, data_only, metadata_only | content=data_only |
exclude/include | expdp 작업 시 원하는 오브젝트 선택 제외/포함 | exclude=table:\"='EMP'\" |
query | 조건의 맞는 데이터만 추출 | query=emp:\"'where sal>1000'\" |
sample | 데이터 많을 때 특정 퍼센트 갯수만 추출 0.000001~100% | sample=scott.emp:20 |
network_link | 원격지 DB에 접근하여 expdp 작업 수행 원격지 DB Link가 생성 되어 있어야함 | network_link=emp@second_db |
job_name | 작업을 수행할 job_name을 수동 설정 | job_name=dp_a |
status | 진행 내용 갱신 주기 - 초 단위 | status=20 |
parallel | expdp 작업 수행시 사용할 process 개수 지정한 갯수만큼 데이터 파일을 만들어야함 -%U 옵션 사용하면 자동으로 만듦 | dumpfile=datapump_%U.dmp parallel=8 |
attach | 일시 중단된 작업에 다시 접속 | attach=system.a |
reuse_dumpfiles | dumpfile이 있으면 overwrite | reuse_dumpfiles=Y |
transport_tablespaces | 테이블스페이스 단위로 마이그레이션 |
|
출처: DBA Guide
2. impdp
* 디렉토리 조회
SQL> SELECT * FROM dba_directories;
* 디렉토리 추가
-- 기존 디렉토리 dpump_dir2 drop
SQL> DROP DIRECTORY dpump_dir2;
-- /backup/dpump 에 대한 디렉토리 dpump_dir2 생성
SQL> CREATE DIRECTORY dpump_dir2 as '/backup/dpump';
* 디렉토리에 대한 권한 설정
SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir2 to 사용자;
* impdp
# impdp system/1239 dumpfile=PT_ABC110_02.dmp directory=dpump_dir2 \
job_name=job_impdp2 logfile=impdp_PT_ABC110_02.log \
TABLES=MESS_ADM.TB_ABC110 parallel=4 TABLE_EXISTS_ACTION=APPEND
* TABLE_EXISTS_ACTION 옵션
같은 이름의 테이블이 존재할 때 SKIP / APPEND / TRUNCATE / REPLACE
3. Example
* expdp
# expdp system/oracle directory=dpump_dir dumpfile=full_%U.dmp \
logfile=full_%U.log job_name=expdp_full full=y
① system/oracle : userid/password
② dpump_dir : directory (※ 절대경로가 아님)
③ full_%U.dmp : dumpfile => parallel 옵션과 함께 사용시 파일명에 %U 사용한다.
④ full_%U.log : logfile
⑤ expdp_full : job_name
⑥ full=y : DB 전체 FULL export
- 작업 중지: 현재 Command-Line 모드로 expdp 수행중에 Ctrl+C를 누른 상태, 즉, "Export>" 프롬프트 상태가 Interactive-Command Interface 모드이다. 이 상태에서 stop_job을 수행해야 작업이 중단된다.
Export> stop_job
※ 작업이 중단되더라도 나중에 다시 실행 및 취소가 가능하다.(완전 삭제는 kill_job)
※ Ctrl+C를 누른 상태로는 서버 기반이기 때문에 취소되지 않고 작업이 계속 진행중이다.
- Data Pump 작업 확인
SQL> SELECT * from dba_datapump_jobs;
- 중지된 Job 재실행하기: attach=job_name으로 실행중이거나 중지 중인 Job에 다시 접속할 수 있다.
# expdp system/oracle attach=expdp_full
Export> start_job
- 작업 내용 표시
Export> continue_clinet
* expdp - Partitioned Table
# expdp system/1239 DIRECTORY=dpump_dir2 \
tables=MESS_ADM.TB_ABC110:PT_ABC110_01 \
DUMPFILE=PT_ABC110_01.dmp logfile=PT_ABC110_01.log CONTENT=DATA_ONLY
# expdp system/1239 DIRECTORY=dpump_dir2 \
tables=MESS_ADM.TB_ABC110:PT_ABC110_02 \
DUMPFILE=PT_ABC110_02.dmp logfile=PT_ABC110_02.log CONTENT=DATA_ONLY
# expdp system/1239 DIRECTORY=dpump_dir2 \
tables=MESS_ADM.TB_ABC110:PT_ABC110_03 \
DUMPFILE=PT_ABC110_03.dmp logfile=PT_ABC110_03.log CONTENT=DATA_ONLY
* impdp - Partitioned Table
# impdp system/1239 dumpfile=PT_ABC110_02.dmp directory=dpump_dir2 \
job_name=job_impdp2 logfile=impdp_PT_ABC110_02.log \
TABLES=MESS_ADM.TB_ABC110 parallel=4 TABLE_EXISTS_ACTION=APPEND
Import: Release 10.2.0.2.0 - 64bit Production on ... 2010 0:31:37
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition ... 64bit Production
With the Partitioning and Data Mining options
Master table "SYSTEM"."JOB_IMPDP2" successfully loaded/unloaded
Starting "SYSTEM"."JOB_IMPDP2": system/******** dumpfile=PT_ABC110_02.dmp
directory=dpump_dir2 job_name=job_impdp2 logfile=impdp_PT_ABC110_02.log
TABLES=MESS_ADM.TB_ABC110 parallel=4 TABLE_EXISTS_ACTION=APPEND
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "MESS_ADM"."TB_ABC110":"PT_ABC110_02" 746.4 MB 18653423 rows
Job "SYSTEM"."JOB_IMPDP2" successfully completed at 00:32:53
4. Remote DB Export 받기
* Database Link 생성
SQL> CREATE DATABASE LINK expdp_net01 CONNECT TO system \
IDENTIFIED BY oracle USING 'EXPDP_DOG13'
* DB Link 확인
SQL> SELECT *
FROM dba_db_links;
* Local DB쪽에 파일 남기기
# expdp system/oracle NETWORK_LINK=expdp_net01 directory=dpump_dir \
dumpfile=expdp_net01_%U.dmp logfile=expdp_net01.log \
job_name=net_expdp_full full=y
※ Long TYPE 등 NETWORK_LINK로 받아지지 않는 것이 있으므로 확인 필요
* Remote DB쪽에 파일 남기기
# expdp system/oracle@EXPDP_DOG13 directory=dpump_dir \
dumpfile=expdp_net01_%U.dmp logfile=expdp_net01.log \
job_name=net_expdp_full full=y
※ DB Link와 Network_Link를 이용하면 Local DB쪽에 dmp파일이 생성되며, Network Alias만 이용하면 Remote DB쪽에 dmp파일이 생성된다.
출처: Hoony's Story