TOOL/DATABASE 2015. 12. 11. 15:58



///// 펌프(버전 10g 이상부터 가능)

펌프가 몇몇 객체를 더 추출하고 더 빠르고 좋다.. 라고 한다.

하지만 10g버전부터 가능하단다.






///// Export (데이터베이스 백업, 추출)

1. 추출파일(.dmp)을 저장할 경로 설정

1) $ mkdir $ORACLE_BASE/export

2) $ sqlplus / as sysdba

3) SQL> create directory 디렉토리명 as '디렉토리경로';

4) SQL> grant read, write on directory 디렉토리명 to 계정명;

5) SQL> quit


2. 추출하기

- 특정 스키마 백업

$ expdp USERID/PW@SID directory=디렉토리명 dumpfile=덤프파일명.dmp Logfile=로그파일명.log schemas=아이디 


- 특정 테이블 A,B 백업 

$ expdp USERID/PW@SID directory=디렉토리명 dumpfile=덤프파일명.dmp Logfile=로그파일명.log tables=A,B


- DB전체 백업

$ expdp US ERID/PW@SID directory=디렉토리명 dumpfile=덤프파일명.dmp Logfile=로그파일명.log full=y 




///// Import (데이터베이스 복구, 적재, 이관)

1. Import할 경로 설정

1) $ mkdir $ORACLE_BASE/import

1-1) 해당 경로에 Import할 추출파일(.dmp)를 옴긴다.


2) $ sqlplus / as sysdba

2-1) 계정 생성

SQL> create temporary tablespace TEMP_META_DATA tempfile 'TEMP_META_DATA.dbf' size 1M extent management local uniform size 512K;

SQL> create tablespace META_DATA datafile 'META_DATA.dbf' size 1M default storage (initial 1M pctincrease 0);

SQL> create user META3_I18N identified by META3_I18N default tablespace META_DATA temporary tablespace TEMP_META_DATA;

SQL> grant dba,connect,resource to META3_I18N;


3) SQL> create directory 디렉토리명 as '디렉토리경로';

4) SQL> grant read, write on directory 디렉토리명 to 계정명;

5) SQL> quit


2. 적재하기 * 펌프는 특정 옵션이 없으면 User를 자동으로 맞춰서 생성해 준다고 한다.

impdp USERID/PW@SID directory=디렉토리명 dumpfile=파일명.dmp Logfile=파일명.log 


- 옵션

REMAP_SCHEMA=expdp한유저:impdp받을유저 

REMAP_TABLESPACE=expdp한테이블스페이스명:impd받을테이블스페이스명

REMAP_DATAFILE=expdp한데이터파일의위치:imp받을데이터파일의위치 * expdp작업을 full=y로 모든DB를 추출해서 다른 시스템(컴퓨터)으로 이관할 경우 데이터파일의 경로가 상이한 경우가 생길 때 사용한다.


TABLE_EXISTS_ACTION=skip    * 테이블이 존재할 때 적용할 행동 (skip / append / truncate / replace)

CONTENT=DATA_ONLY        *  (DATA_ONLY / ALL)




///// 작업 도중에 [Ctrl] + [C]로 중단

Import> 또는 Export> 가 뜨면 다음 명령어를 실행 가능하다.

help : 도움말

kill_job : 현재 작업을 삭제 

start_job :작업 다시 시작 

stop_job : 작업을 중단 

status : 작업 상태

exit : 쉘로 빠져나가기




///// 펌프 모니터링

펌프를 하면서 주의해야 할 점이 있다.

expdp 또는 impdp를 도중에 [Ctrl] + [C] 하고 exit 했다고 

또는 내가 취소 시켰다고 생각되어져도 

내부에서 작업(JOB)은 자동으로 이루어지고 있을 수 있다.

그러므로 작업이 취소되었는지 꼭 확인해야 한다.


- 펌프 작업 상황 확인

SQL> select * from dba_datapump_jobs;

* 만약 STATE컬럼이 EXECUTING인 ROW가 있다면 지금 내부적으로 작업이 진행되고 있다는 것이다.



- 취소방법

1) 컬럼 JOB_NAME을 확인해 둔다.

SQL> select * from dba_datapump_jobs;


2) interactive mode를 실행

- Emport작업일 경우 (expdp)

$ expdp USERID/PW attach=JOB_NAME


- Import작업일 경우 (impdp)

$ impdp USERID/PW attach=JOB_NAME   


3) Import> 또는 Export> 가 뜨면 명령어 실행이 가능하다.    

* help라고 입력하면 명령어를 볼 수 있다.


4) 작업을 취소시키기

> kill_job


5) 쉘로 빠져나가기

> exit





///// 에러

- 에러: ORA-39068: invalid master table data in row with PROCESS_ORDER=-4

ORA-01658 : unable create INITIAL extent for for segment in tablespace ...

문제:

해결:

참조: http://blog.naver.com/beamrock/50168493808 

http://egloos.zum.com/lepard/v/6553257

http://blog.naver.com/yongu81/150087487010



-에러: ORA-00959: tablespace ... does not exist

문제:

해결: 

참조: http://www.dba-oracle.com/t_import_impdp_tablespace_does_not_exist.htm



///// 참고

 오라클 Import Export Pumphttp://blog.naver.com/dangtong76/140042650865

오라클 데이터 마이그레이션(1부) : http://blog.naver.com/musicovery12/220248763142

오라클 데이터 펌프 : http://blog.naver.com/whdahek/220302449425

오라클 데이터 펌프로 export/import 받기 : http://tomasblue.tistory.com/75

오라클 백업 및 복구(Export, Import) : http://www.jigi.net/4243

이관 - 오라클 exp/imp Utility : http://blog.naver.com/itisksc/30046150481

계정 생성 삭제 : http://blog.naver.com/hellzzong/10189134328

오라클 테이블스페이스 및 계정 생성 삭제 : http://blog.naver.com/radiocc/203046281


DATAPUMP IMPORT는 자동으로 USER 생성 : http://gosu250.blog.me/140017021858


TRUNCATE : http://blog.naver.com/fntlove/110145472776