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

[데이터 이동하기] EXP/IMP 심화학습

by #moonyz 2014. 11. 10.

[EXPORT 와 IMPORT의 일반적인 궁금증들]

Q1. export와 import 수행시 수행과정이 화면에 출력되지 않게 하는 방법

$ exp scott/tiger file=/data/backup/export/test02.dmp tables=test01 > /dev/null2>&1

Bash shell : > /dev/null2>&1

Cshell : > &/dev/null

Ksh, Bsh, Bash : > /dev/null>2>&1


Q2. export시 Buffer와 Recordlength의 차이

- export시 conventional path(기본값)을 이용할 경우 

- 메모리에 evaluation buffer를 생성하고 DB buffer cache에 있는 내용을 가져온 후 

- 바이너리로 변환작업을 해서 OS파일로 저장하게 되는데 

# buffer옵션 : evaluation buffer의 크기를 결정하는 파라미터

# recordlength 옵션 :  buffer의 내용을 OS 파일로 내려쓸때 사용하는 레코드의 크기를 결정하는 파라미터

- 위 두가지 파라미터의 크기는 OS 블록의 배수로 설정하는것이 좋음

- DB buffer cache의 내용을 evaluation buffer로 가져올때 여러건의 데이터를 한꺼번에 가져옴 (Array fetch)


Q3. feedback 옵션이란 ?

- feedback=정수값

- 진행되는 과정을 눈에 보여줌


Q4. export진행시 Arrey Fetch로 추출되는데, 한번에 몇개의 Row가 추출되는지?

- evaluation buffer의 크기와 관련

- 하나의 row가 export시 차지하는 양은 각 column크기의 합 + 4 x (column 개수)

- 한번 Fetch될때 Row의 수는 Buffer size/1 row size

- export된 파일의 총크기 = 1 row size x row


Q5. core dump/ segmentation fault 발생 원인과 해결방벙

- 오라클은 데이터를 저장 -> character set 존재

- 국내에서 주로 US7ASCII, KO16KSC5601, KO16MSWIN949 사용

- export 받은 DB와 import할 DB의 캐릭터셋이 다를경우 에러 발생

- 해결방법 

# 캐릭터셋을 일치시킨후 export 받기

# 이미 받아버린 dmp파일이라면 convert 프로그램을 이용하여 imp하는곳의 캐릭터셋과 동일하게 변환후 imp 수행

- 현재 DB의 캐릭터셋 확인 : select value from nls_database_parameters where parameter='NLS_CHARACTERSET'


Q6. Array Fetch란?

- export는 select문장을 만들어 DB Buffer Cache에 있는 데이터를 evaluation buffer로 가져와 dmp파일에 내려쓰는데

- evaluation buffer에 일정량의 데이터가 쌓이게 되면 한꺼번에 파일에 내려써서 I/O발생을 줄이고 속도를 높이는 방법.


Q7. Array Insert란?

- export와 마찬가지로 import시 여런건의 데이터를 한꺼번에 insert하는방법


Q8. import 시 "ABNORMAL END OF FILE" 에러메세지 의미?

- export받은 파일에 문제가 있다는 뜻

- export를 다시 받아야 함


Q9. sys소유자의 객체는 왜 export가 안되는지?

- sys계정은 dictionary 객채들을 소유하고있는데 새로운 DB에도 이미 고유의 dictionary들을 가지고 있기때문

- sys계정은 DB를 관리하는 계정으로  sys계정의 객체를 export하고 import한다는것은 큰 위험이 있고 부하도 많이 걸림

- sys계정은 export를 수행할수 없도록 되어있음


Q10. A사용자 소유의 테이블에 B사용자가 인덱스 생성했을때, A사용자가 export받을때 B사용자가 생성한 인덱스도 함께 export되는지?

- A사용자 계정으로 export수행시에는 받을수 없으나 DBA권한으로 받으면 받을수 있음


Q11. offline상태의 tablespace도 export받을수 있는지?

- export는 select와 동일한 원리이므로 offline이나 shutdown상태에서는 사용할수 없음



[Tables 옵션으로 exp받은 dmp파일 분석]

- 특정테이블만 exp수행한 후 생성되는 dmp파일을 OS편집기로 열어 분석
- 절대 수정하면 안됨
- export받은 dmp파일은 나중에 imp를 하기위해서 바이너리 파일로 변환되어 생성
- 내부적으로 수행하는 순서 : create table -> insert -> create index -> add constraints




[Tablespace 옵션으로 exp받은 dmp파일 분석]

① Tablespace 옵션으로 exp할 경우

- system계정으로 수행해도 exp유틸이 자동으로 해당 tablespace를 dafault tablespace로 사용하는 스키마를 찾아

- 해당 계정으로 로그인 한 후 생성한 테이블들 단위로 exp 받음

- imp할때 tablespace를 먼저만들지 않음

- imp하려는 서버에 tablespace를 먼저 만들어 두어야 함


② 서버1-A사용자의 default tablespace와 서버2-A사용자의 default tablespace가 다른경우

- 서버1에서 exp수행시 해당 사용자의 default tablespace에 테이블생성

- 서버2에서 imp수행시 서버2-A사용자 default tablespace가 아닌 서버1-A사용자의 default tablespace에 생성


③ 서버1-A사용자 default tablespace가 서버2에 존재하지 않는 tablespace일 경우

- 서버1에서 exp수행시 : 서버1-A사용자의 default tablespace에 테이블 생성

- 서버2에서 imp수행시 : 서버1에서 exp수행한 tablespace가 없다면 서버2에서 imp수행하는 스키마의 default tablespace에 입력됨







댓글