EXPORT
주의사항 : export는 딱 명령어를 실행시킬때의 자료들을 기준으로 export합니다.
언제 쓰느냐?
- KB tablespace에 고객, 계좌, 대출 table이 있을 때 이 중 고객table만 backup받고 싶을 때(tables)
- 테스트DB나 신규DB에 원하는 tablespace나 user를 옮기고 싶을 때
- AS-IS에서 TO-BE로 자료를 옮기고 싶은데, 서버끼리의 운영체제나, 오라클 버전이 다를 때
2가지 export
- conventional path export(DEFAULT)
Datafile à Database Buffer Cache à Evaluation Buffer à dumpfile
- direct path export
Datafile à Database Buffer Cache à dumpfile
특징
- DB에 사용자들이 많지 않고, update작업이 거의 일어지지 않는 DB환경이라면, direct path가 당연히 빠릅니다.
- 하지만, 여러사용자들이 동시에 작업하는 환경이라면,
- direct path는 DB cache에 lock을 걸어놓고 export를 완성해야되어서 속도저하
- conventional path는 그런 것과 상관없이, 이미 자료들이 Evaluation Buffer로 다 옮겨간 상황이기 때문에, 전혀 상관없습니다.
EXPORT옵션들 (여기에 나와있지 않은 옵션은 exp -help 하시면 나옵니다)
옵션 |
Default Value |
의미 |
userid |
Export를 '수행하는' 사용자의 계정과 암호 |
|
buffer |
os by os |
Evaluation Buffer의 크기를 바이트단위로 지정 |
file |
expdat.dmp |
export결과를 저장할 파일명 |
grants |
Yes |
해당 스키마에 설정된 권한까지 export받을 것인가 유무 |
indexes |
Yes |
Index를 export받을 것인가 유무 |
Rows |
Yes |
데이터를 받을것인가 유무 |
Constraints |
Yes |
제약조건을 받을 것인가 유무 |
Full |
No |
전체 데이터베이스를 export받을 것인가 유무(EXP_FULL_DATABASE 권한이 있는 계정만 가능합니다.) |
Owner |
Current user |
Export 받을 사용자 이름을 지정 |
Tables |
- |
export받을 table이름을 지정 |
Tablespaces |
- |
export받을 tablespace를 지정(DBA권한가능) |
Inctype |
- |
증분 export의 유형설정 Complete, cumulative, incremental |
Parfile |
- |
export파라미터파일을 지정 |
Direct |
No |
Direct path mode를 이용할 것인가 유무 |
예제1: example tablespace export받는데, filesize를 5M로 분할해서 받기
[oracle@server15 ~]$ exp system/oracle tablespaces=example file=/home/oracle/ex_1.dmp, /home/oracle/ex_2.dmp, \
/home/oracle/ex_3.dmp filesize=25M
Export: Release 11.2.0.2.0 - Production on Sat Feb 18 21:44:14 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in KO16MSWIN949 character set and AL16UTF16 NCHAR character set
About to export selected tablespaces ...
For tablespace EXAMPLE ...
. exporting cluster definitions
. exporting table definitions
. . exporting table UNDO_TEST1 1 rows exported
..생략..
. . exporting partition COSTS_Q1_2001 7328 rows exported
. . exporting partition COSTS_Q2_2001 5882 rows exported
. . exporting partition COSTS_Q3_2001
continuing export into file /home/oracle/ex_2.dmp
7545 rows exported
. . exporting partition COSTS_Q4_2001 9011 rows exported
. . exporting partition COSTS_Q1_2002 0 rows exported
. . exporting partition COSTS_Q2_2002 0 rows exported
. . exporting partition COSTS_Q3_2002 0 rows exported
. . exporting partition COSTS_Q4_2002 0 rows exported
. . exporting partition COSTS_Q1_2003 0 rows exported
. . exporting partition COSTS_Q2_2003 0 rows exported
. . exporting partition COSTS_Q3_2003 0 rows exported
. . exporting partition COSTS_Q4_2003 0 rows exported
. . exporting table COUNTRIES 23 rows exported
. . exporting table CUSTOMERS
continuing export into file /home/oracle/ex_3.dmp
. . exporting table PRINT_MEDIA 4 rows exported
. . exporting table TEXTDOCS_NESTEDTAB 12 rows exported
. exporting referential integrity constraints
. exporting triggers
Export terminated successfully with warnings.
예제2: scott, koo, hr USER export받기
[oracle@server15 ~]$ exp system/oracle owner=scott,koo,hr file=/home/oracle/sample.dmp
Export: Release 11.2.0.2.0 - Production on Sat Feb 18 21:37:32 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in KO16MSWIN949 character set and AL16UTF16 NCHAR character set
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user SCOTT
. exporting foreign function library names for user KOO
. exporting foreign function library names for user HR
. exporting PUBLIC type synonyms
..생략..
. exporting object type definitions for user KOO
. exporting object type definitions for user HR
About to export SCOTT's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export SCOTT's tables via Conventional Path ...
. . exporting table ACCT_SUM 10 rows exported
. . exporting table A_TB 12 rows exported
. . exporting table BONUS 0 rows exported
..생략..
. exporting cluster definitions
. about to export HR's tables via Conventional Path ...
. . exporting table COUNTRIES 25 rows exported
. . exporting table DEPARTMENTS 27 rows exported
. . exporting table EMPLOYEES 107 rows exported
. . exporting table JOBS 19 rows exported
. . exporting table JOB_HISTORY 10 rows exported
. . exporting table LOCATIONS 23 rows exported
. . exporting table REGIONS 4 rows exported
. exporting synonyms
..생략..
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.
예제3 : parameter파일을 사용해서 query를 사용해서 원하는 자료만 export받기
[oracle@server15 ~]$ cat data.par << 파라미터파일 생성
tables=test
query="where no between 1 and 150"
[oracle@server15 ~]$ exp koo/mong_1 parfile=data.par
Export: Release 11.2.0.2.0 - Production on Sat Feb 18 21:54:41 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in KO16MSWIN949 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table TEST 150 rows exported
EXP-00091: Exporting questionable statistics.
Export terminated successfully with warnings.
IMPORT
주의사항 및TIP :
- export한 id와 동일해야합니다.
- 만약에 scott이란 user를 export받았는데, scott의 Default tablespace가 example이라면,
- import할 때 example을 만들어져 있으면 example tablespace에 자료가 import되고
- example가 없으면, import DB쪽 scott의 Default tablespace쪽으로 자료가 import됩니다.
à 결국, 제대로 된 import를 하려면, 모든 tablespace설정들을 export쪽의 DB와 동일하게 하고 import하세요
- 만약에 export된 dumpfile의 user를 알고 싶으면, vi로 열어보면 두번째 줄에 USCOTT 처럼 적혀져 있습니다.(USCOTT면 scott유저)
IMPORT옵션들
옵션 |
Default |
의미 |
Userid |
- |
Import를 수행하는 username/password |
Buffer |
Os by os |
Evaluation buffer의 크기 |
File |
Expdat.dmp |
Import할 파일명 |
Show |
No |
데이터를 Import하지 않고 내용만 확인함 |
Ignore |
Yes |
import도중 에러발생해도 무시하고 계속 진행 |
Grants |
Yes |
권한도 Import할지 설정 |
Rows |
Yes |
데이터를 Import할것인지 설정 |
Indexes |
Yes |
Index를 Import할지 설정 |
Full |
No |
전체 파일을 import할지 설정 |
Fromuser |
- |
Export할 당시 오브젝트의 소유자를 지정함(fromuser, touser는 한셋트) |
Touser |
- |
Import할 오브젝트의 새 owner지정 |
Tables |
- |
Import할 table |
Log |
- |
Import logfile을 지정 |
Parfile |
- |
Import 할 때 옵션들을 적어둔 파라미터파일을 지정함 |
Indexfile |
- |
Indexfile=test01.sql 형식으로 사용하며, 해당 파라미터로 imp실행하면 import는 실제로 실행하지 않으며, 일단 해당 자료들의index를 생성하는 스크립트를 생성합니다. 이 후 vi로 열어서 각각에 맞는 tablespace에 수정하셔서 실행한 후 다시 import하세요. |
*ignore옵션
만약, import할 때 table이 미리 생성되어 있으면 안에 자료들이 없어도 dumpfile에서 자료들을 아예 넣지 못합니다.
그러므로, ignore=y를 해줘서 테이블이 미리 생성되어 있어도 자료들을 넣을 수 있게 해줘야합니다.
** ignore=y 때의 주의사항
테이블이 있어도 자료를 넣어주는데, 똑 같은 레코드는 스킵하는 것이 아니라, 똑 같은 레코드가 있어도, 또 그 자료를 입력합니다.
그러므로, 이미 자료가 들어있으면, truncate하던가, drop하던가, 아니면Primary Key를 지정후 자료를 넣어주세요.
예제1: scott, hr, koo유저들을 export받은 파일에서 koo user만 import하기
(export당시 system 유저로 export했기 때문에, fromuser, touser를 써줘서 의도에 맞게 넣어줘야합니다.)
[oracle@server15 ~]$ imp system/oracle file=sample.dmp fromuser=koo touser=koo
Import: Release 11.2.0.2.0 - Production on Sat Feb 18 22:08:50 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
import done in KO16MSWIN949 character set and AL16UTF16 NCHAR character set
. importing KOO's objects into KOO
. . importing table "ME" 2 rows imported
. . importing table "PROF" 2 rows imported
. . importing table "TEST" 1000 rows imported
. . importing table "YOU" 2 rows imported
Import terminated successfully without warnings.
예제2. import하지 않고 DDL문장만 추출하기
[oracle@server15 ~]$ imp system/oracle show=y log=koo_log.log file=sample.dmp fromuser=koo touser=koo
Import: Release 11.2.0.2.0 - Production on Sat Feb 18 22:13:46 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
import done in KO16MSWIN949 character set and AL16UTF16 NCHAR character set
. importing KOO's objects into KOO
"BEGIN "
"sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','"
"CURRENT_SCHEMA'), export_db_name=>'TESTDB', inst_scn=>'985588');"
"COMMIT; END;"
"ALTER SESSION SET CURRENT_SCHEMA= "KOO""
"CREATE TABLE "ME" ("NO" NUMBER, "ADDRESS" VARCHAR2(10), "HABIT" VARCHAR2(20"
")) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEX"
"T 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) T"
"ABLESPACE "KOO" LOGGING NOCOMPRESS"
. . skipping table "ME"
"ALTER SESSION SET CURRENT_SCHEMA= "KOO""
"CREATE TABLE "PROF" ("NO" NUMBER, "NAME" VARCHAR2(10), "HEIGHT" NUMBER(3, 0"
")) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEX"
"T 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) T"
"ABLESPACE "KOO" LOGGING NOCOMPRESS"
. . skipping table "PROF"
"ALTER SESSION SET CURRENT_SCHEMA= "KOO""
"CREATE TABLE "TEST" ("NO" NUMBER, "NAME" VARCHAR2(10)) PCTFREE 10 PCTUSED "
"40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 "
"FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "KOO" LOGGING"
" NOCOMPRESS"
" ALTER TABLE "TEST" MODIFY ("NAME" DEFAULT 'Olive')"
. . skipping table "TEST"
"ALTER SESSION SET CURRENT_SCHEMA= "KOO""
"CREATE TABLE "YOU" ("NO" NUMBER, "ADDRESS" VARCHAR2(10), "NICK" VARCHAR2(10"
")) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEX"
"T 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) T"
"ABLESPACE "KOO" LOGGING NOCOMPRESS"
. . skipping table "YOU"
Import terminated successfully without warnings.
이후
koo_log.log파일을 열어서 편집하셔서 실행시키면 됩니다.
** 테이블의 크기를 확인하는 법
SQL> select sum(bytes)/1024/1024 mb from dba_segments
2 where owner='KOO' and segment_name='TEST';
MB
----------
.0625
'Oracle > 백업&복구' 카테고리의 다른 글
백업&복구 10번째(cloneDB를 이용한 무정지자료복구) (0) | 2012.02.19 |
---|---|
백업&복구 9번째(datapump) (0) | 2012.02.19 |
Expdp 연습(datapump) ; tablespace export,import datapump 하기 (0) | 2012.02.16 |
2012.02.15 drop user복구(DBlink, CloneDB이용), logmnr에서 삭제된 유저의 쿼리찾기관련(글의 마지막참조) (0) | 2012.02.15 |
CLONEDB 만들어서 논리적인 장애 복구하기(No archive log mode) (0) | 2012.02.15 |