exp system/oracle file=exp_pipe full=y log=daily.log buffer=80960000 CONSISTENT=y & gzip < exp_pipe > DW_FULL_BACKUP.dmp.gz
exp는 보조 백업의 의미로 테이블 단위의 복구가 필요할 때 주로 사용한다.
하지만 장애시점까지의 복구가 아니라 백업받은 시점으로의 복구만 가능하다.
0. exp/imp 제한
- Export 파일(.dmp)을 네트워크를 통해 전송할 때는 반드시
이진(Binary) 형태로 전송
- SQL*Net 을 이용해서 exp/imp를 수행할 수 있음
(exp userID/password@TNS_ALIAS ...)
- Stored Procedure, 함수, 패키지를 Import 할 때 재 컴파일의
필요성이 생길 수 있음
- exp 도중에 시퀀스(sequence)를 사용하게 된다면,
시퀀스 번호는 skip 될 수 있음
- imp할 때 Long Type의 컬럼은 언제나 성공적으로 수행되는 것은 아님
(imp 대신 copy 명령 사용)
1. 일반적으로 많이 사용하는 exp/imp 명령어
---------------------------------------
% exp userid/password file=./dmp/TEST.dmp \
direct=y buffer=10240000 grants=y \
compress=n constraints=y indexes=y rows=y \
triggers=n tables=XXXX,YYYY,ZZZZ \
feedback=10000 log=./log/exp_test.log
% imp dbaid/password file=./dmp/TEST.dmp \
fromuser=userid touser=otherid \
commit=y ignore=y buffer=10240000 grants=y \
constraints=y indexes=y rows=y \
tables=XXXX,YYYY,ZZZZ \
feedback=10000 log=./log/imp_test.log
2. pipe를 통하여 백업 & 압축하는 exp/imp 명령어
--------------------------------------------
% rm /tmp/exp_test
% /usr/sbin/mknod /tmp/exp_test p
% compress </tmp/exp_test> ./dmp/TEST.dmp.Z &
% exp userid/password file=/tmp/exp_test \
direct=y buffer=10240000 grants=y \
compress=n constraints=y indexes=y rows=y \
triggers=n tables=XXXX,YYYY,ZZZZ \
feedback=10000 log=./log/exp_test.log
% rm /tmp/exp_test
% rm -f /tmp/imp_test
% /usr/sbin/mknod /tmp/imp_test p
% uncompress<./dmp/TEST.dmp.Z> /tmp/imp_test &
% imp dbaid/password file=/tmp/imp_test \
fromuser=userid touser=otherid \
commit=y ignore=y buffer=10240000 grants=y \
constraints=y indexes=y rows=y \
tables=XXXX,YYYY,ZZZZ \
feedback=10000 log=./log/imp_test.log
% rm -f /tmp/imp_test
참고) exp와 imp를 연결하여 실행
ftp가 지원되지 않고 TNS로 연결이 가능한 경우 사용한다.
(파이프를 이용하여 exp하고 곧바로 imp로 연결하여 실행)
% vi exp_and_imp.sh
rm /tmp/exp_node
/usr/sbin/mknod /tmp/exp_node p
exp dbaid/password@TNS_ALIAS FILE=/tmp/exp_node OWNER=us_test \
INDEXES=n BUFFER=204800000 DIRECT=y LOG=exp_test.log &
imp dbaid/password FILE=/tmp/exp_node FROMUSER=us_test \
TOUSER=us_test INDEXES=n COMMIT=y BUFFER=204800000 \
FEEDBACK=100000 IGNORE=y LOG=imp_test.log
rm /tmp/exp_node
:wq
3. 파티션된 테이블의 파티션 exp 명령어
--------------------------------------------
% exp userid/password file=./dmp/TEST.dmp \
direct=y buffer=10240000 grants=y \
compress=n constraints=y indexes=y rows=y \
triggers=n tables=XXX:PT_XXX_2007,YYY:PT_YYY_2007 \
feedback=10000 log=./log/exp_test.log
% imp dbaid/password file=./dmp/TEST.dmp \
fromuser=userid touser=otherid \
commit=y ignore=y buffer=10240000 grants=y \
constraints=y indexes=y rows=y \
tables=XXX:PT_XXX_2007,YYY:PT_YYY_2007 \
feedback=10000 log=./log/imp_test.log
% rm -f /tmp/imp_test
4. FILESIZE를 이용한 SPLIT exp/imp 명령(8i)
--------------------------------------------
% exp userid/password file=./dmp/TEST01.dmp, \
./dmp/TEST02.dmp, \
./dmp/TEST03.dmp \
direct=y buffer=10240000 grants=y \
compress=n constraints=y indexes=y rows=y \
feedback=10000 filesize=100M log=./log/exp_test.log \
tables=TEST
% imp dbaid/password file=./dmp/TEST01.dmp, \
./dmp/TEST02.dmp, \
./dmp/TEST03.dmp \
fromuser=userid touser=otherid \
commit=y ignore=y buffer=10240000 grants=y \
constraints=y indexes=y rows=y \
tables=TEST \
feedback=10000 log=./log/imp_test.log
5. remote에서 exp하는 명령어
--------------------------------------------
% exp userid/password@TNS_ALIAS file=./dmp/TEST.dmp \
direct=y buffer=10240000 grants=y \
compress=n constraints=y indexes=y rows=y \
triggers=n tables=XXXX,YYYY,ZZZZ \
feedback=10000 log=./log/exp_test.log
참고) \는 UNIX에서 다음 라인과 이어진다는 표시의 기호임.