Oracle/백업&복구

백업&복구 8번째(export, import)

에몽이ㅋ 2012. 2. 18. 21:07

EXPORT

주의사항 : export는 딱 명령어를 실행시킬때의 자료들을 기준으로 export합니다.

언제 쓰느냐?

  1. KB tablespace에 고객, 계좌, 대출 table이 있을 때 이 중 고객table만 backup받고 싶을 때(tables)
  2. 테스트DB나 신규DB에 원하는 tablespace나 user를 옮기고 싶을 때
  3. AS-IS에서 TO-BE로 자료를 옮기고 싶은데, 서버끼리의 운영체제나, 오라클 버전이 다를 때

 

2가지 export

  1. conventional path export(DEFAULT) 

    Datafile à Database Buffer Cache à Evaluation Buffer à dumpfile 

     

  2. direct path export 

    Datafile à Database Buffer Cache à dumpfile

 

특징

  1. DB에 사용자들이 많지 않고, update작업이 거의 일어지지 않는 DB환경이라면, direct path가 당연히 빠릅니다.
  2. 하지만, 여러사용자들이 동시에 작업하는 환경이라면,
    1. direct path는 DB cache에 lock을 걸어놓고 export를 완성해야되어서 속도저하
    2. 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 :

  1. export한 id와 동일해야합니다.
  2. 만약에 scott이란 user를 export받았는데, scott의 Default tablespace가 example이라면,
    1. import할 때 example을 만들어져 있으면 example tablespace에 자료가 import되고
    2. example가 없으면, import DB쪽 scott의 Default tablespace쪽으로 자료가 import됩니다.

à 결국, 제대로 된 import를 하려면, 모든 tablespace설정들을 export쪽의 DB와 동일하게 하고 import하세요

  1. 만약에 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