본문 바로가기
oracle/[Backup] 백업

[데이터 이동하기] IMPORT

by #moonyz 2014. 11. 7.

<EXPORT>

- export 수행하여 만든 파일을 다시 데이터베이스로 넣는 작업 

- IMPORT 작업은 DDL과 DML을 수행 -> Redo log와 Undo segment를 사용하게됨

- export 유틸리티가 변환한 바이너리 파일을 import 유틸리티가 읽어서 다시 데이터베이스에 저장

- DBA로 export 했으면 DBA로 import 해야함 (scott으로 exp하고 system으로 imp가능)

- 대량의 데이터를 import할 경우에는 반드시 충분한 용량의 Undo Tablespace를 준비하고 작업해야함

- Undo Tablespace의 용량이 부족할 경우, 마지막에 에러발생하여 전부 Rollback

-> commit=y 옵션을 사용하면 array단위로 commit을 수행하므로 전체가 rollback되는 현상을 막을수 있음

- AS-IS(구DB)에 있던 데이터와 TO-BE(신DB)에 있던 데이터가 동일해서 충돌이 일어나서 에러발생 할수도 있음

-> ignore=y 옵션을 사용하여 import 도중 에러발생시 무시하고 계속 진행

-> import 단계에서 하나가 에러나면 다음 작업이 시작되지 않음

-> 다시 import하려면 에러나기전 작업들을 다 지우고 다시 import 해야함

- 인덱스가 많은 테이블을 import 할때는 기존에 있던 인덱스를 지우고 import후 인덱스를 재생성하는 것이 좋음

-  import작업은 사용량이 적을때 막아놓고 작업해야함 


* IMPORT OPTION

 옵션명

기본값 

의미 

userid

없음 

 Import를 수행하는 username/passwd 

buffer 

os에 따라 다름 

 evaluation buffer 크기, export와 동일 

file 

expdat.dmp 

 import할 export 파일명 

show 

No 

 데이터를 import하지않고 내용만 확인함 

ignore

No 

 import 도중 에러발생시 무시하고 계속 진행 

 grants

Yes 

 권한도 import할 것인지 설정 

rows 

Yes 

 데이터  import 여부

indexes 

Yes 

 index  import 여부

full 

No 

 전체 파일 import 여부

 fromuser

없음 

 export할 당시 오브젝트의 소유자를 지정함 

touser 

없음 

 import할 오브젝트의 새 owner 이름 

tables 

없음 

 import할 테이블 목록 

recordhength 

os 별로 다름 

 한번에 import할 record의 길이를 지정 

inctype 

없음 

 증분 import의 유형지정, system과 restore가 적당함 

commit 

no 

 각 array의 입력후 commit 여부 지정

 디폴트 값은 테이블 전체가 입력완료된후 commit

 *arrary : 한번 입력되는 단위 

parfile 

없음 

 import의 파라미터를 적어둔 파라미터 파일 지정 




[실습]

1. 전체 데이터 import 수행하기

- TO-BE에 AS-IS와 같은 테이블이나 데이터가 존재한다면 추가하게됨

- TO-BE에 제약조건이나 인덱스가 존재한다면 데이터가 추가되지 않고 에러발생 (unique index, primary key)

$ imp system/oracle file=/data/exp/full01.dmp full=y ignore=y


2. 특정 사용자의 데이터만 import 수행하기

$ imp system/oracle file=/data/exp/full01.dmp fromuser=scott ignore=y


3. 특정 테이블의 데이터만 import 수행하기

$ imp system/oracle file=/data/exp/full01.dmp tables=test01 ignore=y


4. scott사용자의 test02 테이블을 hr 사용자 소유로 변경하기

$ exp scott/tiger file=/data/exp/test02.dmp tables=test02

imp system/oracle file=/data/exp/test02.dmp fromuser=scott touser=hr  ignore=y


5. 실제 데이터는 import하지 않고 DDL문장만 추출하기

- show=y 옵션을 주면 export 파일의 모든내용을 보여주는데

- log옵션을 주면 로그파일에 그 내용들이 전부 저장됨 

- 저장된 로그파일을 열어서 편집하여 사용

imp scott/tiger file=/data/exp/test02.dmp show=y log=test02.log





댓글