[출처] 오라클 export/import|작성자 미토

 

Export와 Import

 

1. Export는 전체 데이타 베이스,특정 사용자 혹은 특정 테이블에 대해서 그 내용을 읽은 다음

그 것을 지정된 덤프 파일에 기록하는 논리적 백업이다.

 

Ex) exp system/manager file = expdat.dmp owner = scott grants = N indexes = Y

compress = Y rows = Y

 

2. Export에는 풀 모드, 사용자 모드, 그리고 테이블 모드의 3가지가 있다.

 

n 풀 모드 : 전체 Data Dictionary가 읽혀지며 데이타베이스를 재구성하기 위해 필요한

 

DDL이 Export 덤프 파일에 기록된다.

 

n 사용자 모드 : 사용자의 오브젝트와 그 속의 데이타 그리고 사용자에 의해 부여된 권한과

 

인덱스가 모드 Export된다.

 

n 테이블 모드 : 지정된 테이블내의 구조, Index 및 권한등이 그 테이블 속에 포함된 데이타와

 

함께 Export된다.

 

3. Export 옵션

 

 

 

옵션 사양 Default Value(오라클7)

 

~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~

 

USERID Export를 작동시키는 user name/passwd Not Defined

 

BUFFER 로우를 이동시키기 위해 필요한 버퍼의 크기 시스템에 따라 다름

 

FILE Export 덤프 파일 지정된 파일

 

COMPRESS Extent를 단일Extent로 압축할 것인지의 여부 YES

 

GRANTS 오브젝트의 권한을 Export할 것인지의 여부 YES

 

INDEXES 테이블의 Index를 Export할 것인지의 여부 YES

 

ROWS 데이타 로우를 Export할 것인지의 여부 YES

 

CONSTRAINTS Constraint를 Export할 것인지의 여부 YES

 

FULL 전체 데이타베이스의 Export여부 NO

 

OWNER Export할 데이타베이스 사용자명 Current User

 

TABLES Export할 테이블의 목록 Not Defined

 

RECORDLENGTH Export파일 레코드의 길이(Byte) 시스템에 따라 다름

 

INCTYPE 수행되는 Export의 형태(Complete,Cumulative등) Complete

 

RECORD Data Dictionary 에 레코드를 저장할 것인지 여부 YES

 

PARFILE Export에 사용될 파라미터 파일의 이름 Not Defined

 

ANALYZE 통계자료를 Dump 파일에 쓸 것인지의 여부 Estimate

 

Consistent Read Consistency 버젼 유지 NO

 

LOG Export로그가 기록될 파일 Not Defined

 

 

 

4. Import는 Export 덤프 파일에 있는 오브젝트나 사용자별 데이타를 선별적으로 읽어들여 논리적인

 

백업 복구를 실행한다.

 

Ex) imp system/manager file = expdat.dmp FROMUSER = scott TOUSER = tommy indexes = Y

 

rows = Y

 

5. Import옵션

 

옵션 사양 Default Value(오라클7)

 

~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~

 

USERID Import을 작동시키는 user name/passwd not defined

 

BUFFER 로우를 이동시키기 위해 필요한 버퍼의 크기 시스템에 따라 다름

 

FILE Import 덤프 파일 지정된 파일

 

SHOW 파일 내용을 단지 보기만 할 것인지의 여부 NO

 

IGNORE Import시 발생하는 에러를 무시할 것인지 여부 NO

 

GRANTS 오브젝트의 권한을 Import할 것인지의 여부 YES

 

INDEXES 테이블의 Index를 Import할 것인지의 여부 YES

 

ROWS 데이타 로우를 Import할 것인지의 여부 YES

 

FULL 전체 데이타베이스의 Import여부 NO

 

FROMUSER 덤프파일의 USER명 Not Defined

 

TOUSER Import할 USER명 Not Defined

 

TABLES Import할 테이블의 목록 Not Defined

 

RECORDLENGTH Import파일 레코드의 길이(Byte) 시스템에 따라 다름

 

INCTYPE 수행되는 Import의 형태(Complete,Cumulative등) Complete

 

COMMIT 각 ARRAY 마다 Commit을 실행하는지 여부 NO

 

PARFILE Import에 사용될 파라미터 파일의 이름 Not Defined

 

INDEXFILE Index파일을 생성하는 Script를 지정 Not Defined

 

DESTROY 기존 데이타 파일을 무시하고 신규로 만들 것인지 여부 No

 

LOG Import로그가 기록될 파일 Not Defined

 

6. SCOTT데이타를 LARRY로 옮기는 방법

 

 

 

$ sqlplus system/manager

 

SQL>create user larry /* LARRY user 생성 */

 

identified by lion default tablespace users

 

temporary tablespace temp

 

quota unlimited on users;

 

SQL>grant connect,resource to larry

 

SQL>revoke unlimited tablespace from larry

 

$ exp scott/tiger owner = scott file = scott.dmp /* Export */

 

$ imp larry/lion fromuser = scott touser = larry file = scott.dmp /* Import */

 

( scott이 dba권한을 가지고 있으면

 

imp system/manager fromuser = scott touser = larry file = scott.dmp 로 실행)

 

7. Long 타입의 테이블을 Import할 경우 (BUFFER 옵션)

 

Import옵션중 BUFFER 사이즈는 반드시 Long타입의 한 로우보다는 커야 한다.따라서 BUFFER의

 

DEFAULT값인 64K보다 큰 Long타입의 Row가 있는 테이블을 Import할 때 DEFAULT BUFFER사이즈로

 

Import하게 되면 에러(IMP-00020)가 발생한다. 그러므로 Import시에는 적절하게 BUFFER 사이즈를

 

늘려주어야 한다.

 

▶ imp system/manager file = expdat.dmp buffer = 128000

 

8. 롤백 세그먼트와 COMMIT옵션

 

데이타베이스는 DEFAULT로 모든 테이블을 Import한 후 COMMIT을 수행한다. 만약 크기가 300M나

 

되는 테이블이 있다면 롤백 세그먼트는 최소한 300M정도 크기를 유지하는 엔트리를 유지하게 되어

 

시스템에 불필요한 부담을 줄 수 있다. 그래서 이런 경우 롤백 세그먼트의 엔트리의 크기를 줄이기

 

위해 COMMIT = Y 옵션을 Import시에 줄 수 있다. 이것은 주어진 BUFFER 사이즈가 채워지면 바로

 

COMMIT을 실행시켜주어 롤백 세그먼트 엔트리 크기를 줄여줄 수 있다. 아래의 예에서는 64K가

 

채워지면 바로 OMMIT을 실행시킨다.

 

▶imp system/manager file = expdat.dmp buffer = 64000 commit = Y

 

9. ROWS와 IGNORE를 이용한 재Import 방법

 

ROWS파라미터는 단지 데이터베이스 구조만을 생성하는 경우와 최초 Import시 생성에 실패한

 

부분을 재복구할 경우에 사용된다. IGNORE 파라미터는 최초 Import시 생성했던 오브젝트들은

 

무시하고 에러등의 이유로 Import되지않은 부분에 대해서만 Import가 가능하도록 한다.

 

다음의 예를 통해서 살펴보자.

 

imp system/manager file = expdat.dmp full = Y commit = Y buffer = 64000

 

▶ 테이블이 생성되기전에 뷰가 먼저 생성되어 ORA-00942(테이블 또는 뷰가 존재하지 않음)

 

에러 발생함. 다음과 같이 재실행한다.

 

imp system/manager file = expdat.dmp ignore = Y rows = N commit = y buffer = 64000

 

▶ 첫번째 Import시 생성되었던 일부 오브젝트는 무시하고 에러로 중단된 부분을 Import하기

 

위해서 IGNORE = Y 라는 옵션을 추가하였고 데이타 로우는 다시Import하지 않고 단지

 

뷰같은 오브젝트만을 만들기 위해서 ROWS=N 옵션을 사용하였다.

 

(다중 사용자에 의해 사용되는 테이블을 참조하는 뷰는 어차피 계속 에러가 발생한다.)

 

10. Table과 Index를 분리하여 Import하는 방법

 

scott user의 모든 데이타를 test user로 옮긴다고 가정하고 또 Table과 Index는 각각 다른

 

Tablespace저장한다고 하면 다음과 같은 순서로 실행을 하면 된다.

 

1) scott user의 모든 데이타를 Export한다.

 

$ exp scott/tiger file=scott.dmp

 

2) Export 받은 파일에서 Index를 제외한 나머지만 Import한다.

 

$ imp system/manager file=scott.dmp fromuser=scott touser=test idexes=n commit=y

 

3) Indexfile Option을 이용해서 Index script를 만든다.

 

$ imp system/manager file=scott.dmp indexfile=index.sql

 

4) Index.sql에서 Tablsepace설정을 적절히 변경한다.

 

5) Index.sql을 실행시킨다.

 

$ sqlplus test/test

 

SQL> @index

Posted by 야동우
,