[출처] 오라클 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
'DB > Oracle 정리' 카테고리의 다른 글
SQL*Loader 사용법 (2) | 2009.11.30 |
---|---|
[10g] DATAPUMP IMPORT [자동 user 생성 기능] 링크 (0) | 2009.11.28 |
Dangtong 의 오라클 <Data Pump Export / Import 1편> (0) | 2009.11.28 |
동적 성능 뷰 (Dynamic Performance Views) 정리 (0) | 2009.10.31 |
자료 사전(Data Dictionary) 정리 (0) | 2009.10.31 |