1.exp
nd_user스키마에 속한 모든 객체를 nakdong.dmp로 백업한다.

$ exp system/manager owner=nd_user rows=y file=nakdong.dmp

c:\>exp system/wia#oracle@GSISDEV owner=ess rows=y statistics=none constraints=y file=d:\ess.dmp


* 참조
Oracle 11g R2에는 디스크 공간을 확보하는 새로운 기능이 있다.

새로운 파라미터인 "DEFERRED_SEGMENT_CREATION"이 추가되었는데 초기값은 "TRUE"로 되어 있다.

이 옵션은 테이블을 생성 후 첫번째 ROW가 입력되기 전까지 세그먼트의 생성이 지연 된다.

이 파라미터가 TRUE인경우에 row가 0건인 table은 exp 명령어를 이용해 export하면 빈 테이블들은 백업되지 않는다.

해결책 1
-------------------------------------------------------------------------------------------------------------
SELECT * FROM V$PARAMETER WHERE NAME LIKE '%defer%'

ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE SCOPE=BOTH;

이 기능을 적용한 후에 생성된 빈 테이블을은 백업이 잘되지만 이미 생성되어 있던 테이블들은 적용되지 않으므로 tablespace를 이동하거나 테이블을 재생성해야 한다.

해결챌 2
-------------------------------------------------------------------------------------------------------------
SELECT 'ALTER TABLE 소유자계정.' || TABLE_NAME || ' ALLOCATE EXTENT;' FROM USER_TABLES WHERE NUM_ROWS = 0;
sys 계정으로 script를 추출후 실행한후 exp 하면 된다.






2.imp
nd_user스키마에 속한 모든 객체를 nd_user(다른 데이타베이스)로 복구한다.(제약조건도 모두 복원된다.)

$ imp system/manager fromuser=nd_user touser=nd_user rows=y file=nakdong.dmp ignore=y

c:\>imp msp/qwe123@mbill fromuser=ess touser=msp rows=y file=d:\ess.dmp ignore=y


* import 는 기존에 존재하는 오브젝트를 지우지 않고 추가되는 개념이므로 해당 오브젝트의 소유자와 소유 오브젝트를 삭제후 새로 생성하고 imp하는 것이 낫다.

DROP USER nd_user CASCADE;

CREATE USER nd_user IDENTIFIED BY nd_pass
	DEFAULT TABLESPACE ND_DATA
	TEMPORARY TABLESPACE TEMP;

GRANT CONNECT, RESOURCE, DBA, UNLIMITED TABLESPACE TO nd_user;