[ORACLE] IMPDP 명령어 모음
● 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. 데이터 펌프 수행
$ impdp 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
- TABLESPACES - 명시된 TABLESPACE에 저장된 OBJECT 에 대해 EXPORT
- PARALLEL : 데이터 펌프 작업시 병렬 프로세스의 개수를 지정하는 옵션
EX>
<dumpfile>
/export/test_dump01.dmp
/export/test_dump02.dmp
/export/test_dump03.dmp
/export/test_dump04.dmp
$ impdp scott/tiger DIRECTORY=EXPDUMP LOGFILE=test_dump.log FULL=y PARALLEL=4 DUMPFILE=test_dump%U.dmp
- EXCLUDE : IMPDP 작업에서 제외 될 object or schema 이름을 명시하는 옵션
EX>
$ impdp 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 : impdp작업에서 포함 될 object or schema 이름을 명시하는 옵션
EX>
$ impdp 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>
$ impdp 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>
$ impdp scott/tiger DIRECTORY=EXPDUMP DUMPFILE=test_dump.dmp LOGFILE=test_dump.log parfile=test.par content=metadata_only
- ESTIMATE
1. BLOCKS [default] : dumpfile 내의 테이블이 사용하는 디스크 사용량을 오브젝트 쓰인 block 수로 표현 함 (결과는 log 파일에 떨어짐)
2. STATISTICS : 사용량을 통계로 표현 (결과는 log 파일에 떨어짐)
-- MASTER_ONLY
1. NO [default]
2. YES : 마스터테이블만 가져온 후 작업 중단
(Master table : 현재 수행 중인 모든 export/import 객제의 상태정보와 dump file set에서의 위치정보를 가지고 있는 테이블로
갑작스러운 작업중단에도 master table과 dump file set 정보를 이용하여 이어서 작업을 재개할수 있게 함)
-- SKIP_UNUSABLE_INDEXES
1. YES : UNUSABLE INDEX 는 제외하고 IMPORT
2. NO : UNUSABLE INDEX 포함하여 IMPORT
-- 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.
$ impdp scott/tiger attach=SYS_EXPORT_FULL_01
3. Check the status of the job.
Export> impdp 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';