오라클(oracle) 백업(exp), 복구(imp) 하기 

Export와 Import는 가장 유용하게 그리고 자주 사용되는 백업관련 DBA ToolKit 입니다.


SQL*Loader는 외부 데이터를 오라클 서버로 업로드 하는 역할을 수행 하지만 Export/Import는 오라클 서버의 데이터를 다른 오라클 서버(이때 플랫폼과는 무관하다. 예를 들어 윈도우용 오라클에서 Export 받은 파일을 Unix/Linux 서버 기반의 오라클로 Import 하는것이 가능하다) 또는 같은 서버의 다른 사용자로 Import 하는 것이 가능 하다.
먼저 Export부터 그 사용법에 대해 알아 보기로 하자.

1. Export
- EXport는 데이터베이스의 논리적인 백업을 제공 한다. 즉 테이블, 데이블스페이스, 데이터를 포함한 사용자, 그리고 사용자가 만든 스키마 오브젝트(Index, View, Synonym, Trigger, DataBase Link, sequence, stored code 등등)등을 백업 받을 수 있는 것이다.

- Export 유틸리티의 Output은 export dump 파일 이다. 이 파일은 import Utility를 통해 읽혀져 다른 데이터베이스등으로 복구 되는 것이다.

- Export 파라미터
많은 파라미터중 UserID라는 파라미터는 꼭 가져야 한다는 것을 기억 하자. Exp 명령 입력하고 아무 파라미터도 주지 않는 경우 기본(Default) 값을 제공하면서 입력을 위한 프롬프트를 보여준다.(이때 사용자 ID와 ORD)는 반드시 입력해야 한다.

USERID : username/password를 값으로 입력 한다. 반드시 입력해야 한다. 만약 전체 데이터베이스를 백업 받기 위해 서는 기술된 User는 명시적으로 exportfull database 롤(Role)을 부여 받아야 한다.

 


FILE : 출력 파일의 이름(Export후 생기는 dump 파일 이름)

 


ROWS : Export Dump 파일에 테이블 행(데이터) 포함 여부 표시: (Y)es/(N)o 만약 여러분이 테이블 구조만 export하고 실제 row data는 백업을 원하지 않는 경우에는 rows=n 이라고 명시 해야 한다.(default값은 y)

 


Query : 테이블의 특정 부분만을 Export 하기 위해서 사용 한다.
(exp userid=scott/tiger tables=emp query=\"where sal \> 2000 \
-----------------------------------------
Export Mode와 관련된 파라미터

FULL : DataBase 레벨의 Export를 수행할지 여부를 표시, 전체 데이터베이스 익스포트 여부를 표시: (Y)es/(N)o
(exp userid=system/manager full=y)

 


OWNER : Schema Level의 EXport를 수행 할지의 여부를 표시 Export를 원하는 사용자이름을 기술 한다.
(exp userid=system/manager owner=(scott)
TABLES : export할 테이블 테이블 리스트 또는 (Y)es/(N)o
(exp userid=system/manager tables=(emp, dept, salgrade)
(exp userid=system/manager tables=(scott.emp%)
TABLESPACE : export를 원하는 테이블스페이스(TableSpace)를 기술
(exp yserid=system/manager tablespaces = (users) )
-----------------------------------------------------------------------------
INDEXES, CONSTRAINTS, GRANTS, TRIGGERS : Index, Constraints, grant,
triggers등을 export할지의 여부를 지정 (Y)es/(N)o, 기본적으로 앞 4개의 스
키마 오브젝트는 Export 됨
(exp userid=scott/tiger indexes=n constraints=n grants=n triggers=n)

DIRECT : Direct 모드 익스포트 유무 (Y)es/(N)o
INCTYPE : 익스포트 레벨 유형
PARFILE : 파라미터가 명시된 파일의 이름, Export인자들이 많을 경우 별도의 파일로
서 관리 가능
HELP : 대화식 모드에서 익스포트 파라미터 디스플레이 (Y)
LOG : 로깅 메시지를 위한 파일이름을 기술 한다.
CONSISTENT : 익스포트 동안 데이터 갱신시 데이터베이스의 읽기 일관성 뷰 제공
유무: (Y)es/(N)o
BUFFER : 바이트로된 데이터 버퍼 크기: (정수)
COMPRESS : 하나의 익스텐트(Extent)에 모든 데이터를 포함시킬지 명시, (Y)es/(N)o

* Direct Path 익스포트 개념
Direct Path 기능을 사용함으로써 데이터를 훨씬 더 빨리 export할 수 있다.

* Direct-Path 익스포트의 구조
export시 direct 모드의 사용은 파라미터 DIRECT=Y라고 기술함으로써 설정될 수 있다
Direct Path 익스포트는 인스턴스의 다른 자원들과 경쟁하지 않으며 세션에 의해 사용
되는 private area로 데이터베이스 블록을 읽어 들인다.
행들은 전송을 위해 Two-Task Command(TTC) 버퍼로 직접 이동되며 이 TTC 버퍼
내의 데 이터는 Export의 형식으로 되어 있다.

---------------------------------------------------------------
Export의 예 1 : exp 라는 명령만 입력 함으로서 대화식으로 export 처리
---------------------------------------------------------------
D:\backup>exp

Export: Release 9.2.0.1.0 - Production on 일 Jan 11 22:51:41 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


사용자명: scott
암 호:

다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
배열 인출 버퍼 크기 입력: 4096 >

엑스포트 파일: EXPDAT.DMP >

(2)U(사용자), 또는 (3)T(테이블): (2)U >

권한부여 엑스포트 (yes/no): yes >

테이블 데이터 엑스포트 (yes/no): yes >

확장 영역 압축 (yes/no): yes >

KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되
었습니다

. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. SCOTT 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 엑스포트 중
. 전용 유형 동의어 엑스포트 중\
. SCOTT 사용자의 객체 유형 정의를 엑스포트 합니다 \r

SCOTT의 객체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. SCOTT의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 ADDRBOOK(를)을 엑스포트 중 3 행이 엑스포트됨
. . 테이블 EMP(를)을 엑스포트 중 15 행이 엑스포트됨
......
. 동의어 엑스포트 중
. 뷰 엑스포트 중
. 저장 프로시저 엑스포트 중
. 작업을 엑스포트합니다
. 참조 무결성 제약조건 엑스포트 중
. 트리거 엑스포트 중
. 인덱스유형을 엑스포팅합니다
. 비트맵, 함수, 기능과 확장 가능한 인덱스들을 엑스포트합니다
. 이후 테이블 처리를 엑스포트 중
. 구체화된 뷰 엑스포트 중
. 스냅샷 로그 엑스포트 중
. 작업 대기열을 엑스포트 중
. 리프레쉬 그룹과 자식 엑스포트 중
. 차원을 엑스포트합니다\
. 스키마 이후 단계의 객체와 작업을 엑스포트합니다\r

. 통계를 엑스포트합니다
엑스포트가 경고 없이 정상적으로 종료되었습니다.

D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:07p

.
2004-01-11 11:07p
..
2004-01-11 11:08p 51,200 EXPDAT.DMP <-- 이름을 안주면 이 이름으로 생성
1개 파일 51,200 바이트
2 디렉터리 2,185,789,440 바이트 남음

 


---------------------------------------------------------------
Export의 예 2 : SCOTT 계정의 모든 오브젝트를 Export
---------------------------------------------------------------
D:\backup>exp userid=scott/tiger file=scott.dmp
또는 D:\backup>exp userid=system/manager owner=scott file=scott.dmp

Export: Release 9.2.0.1.0 - Production on 일 Jan 11 23:24:38 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되었습니다
\
. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. SCOTT 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 엑스포트 중
. 전용 유형 동의어 엑스포트 중\
. SCOTT 사용자의 객체 유형 정의를 엑스포트 합니다 \r

SCOTT의 객체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. SCOTT의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 ADDRBOOK(를)을 엑스포트 중 3 행이 엑스포트됨
. . 테이블 EMP(를)을 엑스포트 중 15 행이 엑스포트됨
.......................

엑스포트가 경고 없이 정상적으로 종료되었습니다.

D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:24p

.
2004-01-11 11:24p
..
2004-01-11 11:08p 51,200 EXPDAT.DMP
2004-01-11 11:24p 51,200 scott.dmp
2개 파일 102,400 바이트
2 디렉터리 2,185,736,192 바이트 남음

 


---------------------------------------------------------------
Export의 예 3 : scott 계정의 emp, dept 테이블의 구조만 Export
---------------------------------------------------------------
D:\backup>exp userid=scott/tiger tables=(emp, dept) rows=n file=structure.dmp

Export: Release 9.2.0.1.0 - Production on 일 Jan 11 23:29:15 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되었습니다

경고: 테이블 데이터(행)가 엑스포트 되지 않습니다

지정된 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 EMP(를)을 엑스포트 중
. . 테이블 DEPT(를)을 엑스포트 중
엑스포트가 경고 없이 정상적으로 종료되었습니다.

D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:29p

.
2004-01-11 11:29p
..
2004-01-11 11:24p 51,200 scott.dmp
2004-01-11 11:29p 4,096 structure.dmp <--------
3개 파일 59,392 바이트
2 디렉터리 2,185,781,248 바이트 남음

---------------------------------------------------------------
Export의 예 4 : 전체 데이터베이스 백업
---------------------------------------------------------------
D:\backup>exp userid=system/manager full=y file=full.dmp

 

========================Import =========================================
2. Import
Import Utility는 Export를 통해 생성된 덤프파일을 읽어 데이터베이스 복구를 진행
한다.

파라미터

USERID : Import를 수행 할 객체의 사용자이름/패스워드
FILE : 입력 파일 이름. Export를 통해 생성된 파일
IGNORE : Import시 테이블이나 인덱스와 같은 스키마 오브젝트는 기본적으로 만들려
고 시도한다. 이때 비록 비어있지만 객체가 이미 존재 한다면 존재함으로 인
한 생성 에러가 나타나는데 이를 무시한다는 의미 이다.(default n)
ROWS : Import시 테이블의 Row를 임포트 할것인지의 여부를 지정
(default y)
TABLES : 임포트시킬 테이블(default y)
INDEXES : 임포트시킬 인덱스(default y)
CONSTRAINTS : Constraint들을 import할 전지의 여부를 표시(default y)
GRANTS : GRANT들을 임포트 할건지의 여부(default y)
INCTYPE : 증분적 임포트 유형 명시. SYSTEM 및 RESTORE 옵션이 있음.
PARFILE : 파라미터 명시 파일, 파라미터등이 많아 복잡한 경우에 사용
HELP : 대화식 모드로 익스포트 파라미터 디스플레이.
LOG : 로그 파일명
INDEXFILE : Index-creation 명령을 수용할 파일 명시.
---------------------------------- Import Mode와 관련된 파라미터
FULL : 전체 데이터베이스를 임포트함.
Schema Level에서는 fromuser, touser를 사용한다.
DBA이거나 import full database role을 부여 받지 않았다면 import를 수행하는 사용
자의 스키마에서만 import를 할 수 있다. 이를 해결하기 위해 fromuser, touser를 사
용 한다.
- FROMUSER : 임포트시킬 객체를 포함하는 스키마 리스트.
- TOUSERS : 사용자의 스키마가 임포트될 사용자 리스트 명시.
Table level에서는 tables 파라미터를 사용한다.
- Tables : 기술된 테이블들이 임포트 된다.

예) $imp userid=system/manager full=y
$imp userid=system/manager fromuser=scott touser=test
$imp userid=system/manager tables=(scott.emp, scott.dept)
-----------------------------------------------------------------

DESTROY : Import 시 Import Utility는 필요하다면 어떠한 테이블 스페이스에 대해 만
들 수도 있다. 만약 destroy=y이면 export dump 파일안에 같은 이름을 가
진 data file명이 있다면 import되는 오라클 서버에 대해서 그 파일을
overwrite 한다는 것이다. (default는 n이다.)
($imp userid=scott/tiger destroy=y)

 

=========================================================================
import 예제 1 : scott 계정을 삭제 후 export 받은 백업본을 이용해 복구하기
=========================================================================

---> 아래는 SQL*Plus에서...
SQL> connect / as sysdba
연결되었습니다.
SQL> drop user scott cascade;
사용자가 삭제되었습니다.


---> 아래는 명령프롬프트에서...
D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:33p

.
2004-01-11 11:33p
..
2004-01-11 11:28p 4,096 EXPDAT.DMP
2004-01-11 11:36p 548,864 full.dmp
2004-01-11 11:24p 51,200 scott.dmp
2004-01-11 11:29p 4,096 structure.dmp
4개 파일 608,256 바이트
2 디렉터리 2,185,232,384 바이트 남음

D:\backup>imp userid=system/manager fromuser=scott touser=scott file=scott.dmp

Import: Release 9.2.0.1.0 - Production on 월 Jan 12 00:20:59 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

엑스포트 파일은 규정 경로를 거쳐 EXPORT:V09.02.00 에 의해 생성되었습니다

경고: 객체는 다른 사용자 SCOTT(이)가 엑스포트한 것입니다.

KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
. SCOTT 객체를 SCOTT(으)로 임포트하는 중입니다
IMP-00003: ORACLE 오류 1435 가 발생했습니다
ORA-01435: 사용자가 존재하지 않습니다
경고와 함께 임포트가 정상 종료되었습니다.


---> 다음은 SQL*Plus에서...
SQL> create user scott identified by tiger
2 default tablespace users
3 temporary tablespace temp
4 quota 100m on users;

사용자가 생성되었습니다.

SQL> grant connect, resource to scott;
권한이 부여되었습니다.

SQL> connect scott./tiger;
연결되었습니다.

SQL> select * from tab;
선택된 레코드가 없습니다.


---> 다음은 명령 프롬프트에서...

D:\backup>imp userid=system/manager fromuser=scott touser=scott file=scott.dmp

Import: Release 9.2.0.1.0 - Production on 월 Jan 12 00:33:32 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

엑스포트 파일은 규정 경로를 거쳐 EXPORT:V09.02.00 에 의해 생성되었습니다

경고: 객체는 다른 사용자 SCOTT(이)가 엑스포트한 것입니다.

KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
. SCOTT 객체를 SCOTT(으)로 임포트하는 중입니다
. . 테이블 "ADDRBOOK"(를)을 임포트 중 3 행이 임포트되었습니다.
. 테이블 "EMP"(를)을 임포트 중 15행이 임포트되었습니다.
............
............
임포트가 경고 없이 정상적으로 종료되었습니다.


SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
ADDRBOOK TABLE
BONUS TABLE
CUSTOMER TABLE
CUSTOMER1 TABLE
CUSTOMER2 TABLE
DEPT TABLE
EMP TABLE
EMPLOYEE TABLE
EMP_HISTORY TABLE
KOR TABLE
LONGTEST TABLE

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
MYDEPT TABLE
MYEMP TABLE
MYTABLE TABLE
SALES TABLE
SALGRADE TABLE
SAWON TABLE
S_CUSTOMER TABLE
S_DEPT TABLE
S_EMP TABLE
S_IMAGE TABLE
S_INVENTORY TABLE

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
S_ITEM TABLE
S_LONGTEXT TABLE
S_ORD TABLE
S_PRODUCT TABLE
S_REGION TABLE
S_TITLE TABLE
S_WAREHOUSE TABLE
TEST TABLE
TIME_TAB TABLE

31 개의 행이 선택되었습니다.


=========================================================================
import 예제 2 : emp Table을 삭제 후 백업본을 이용해 복구하기
=========================================================================

--> SQL*Plus에서 ...
SQL> connect scott/tiger
연결되었습니다.
SQL> drop table emp;
drop table emp
*
1행에 오류:
ORA-02449: 외래 키에 의해서 참조된 테이블에 유일/기본 키입니다

SQL> drop table emp cascade constraint;
테이블이 삭제되었습니다.

SQL> select count(*) from emp;
select count(*) from emp
*
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

 

--> 명령프롬프트에서 실행

D:\backup>imp scott/tiger tables=(emp) file=scott.dmp <-- scott으로 export 받은 경우에...
D:\backup>imp userid=system/manager tables=(emp) file=scott.dmp fromuser=system
touser=scott <-- system으로 export 받은 경우에...

Import: Release 9.2.0.1.0 - Production on 월 Jan 12 00:43:45 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

엑스포트 파일은 규정 경로를 거쳐 EXPORT:V09.02.00 에 의해 생성되었습니다
KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
. SCOTT 객체를 SCOTT(으)로 임포트하는 중입니다
. . 테이블 "EMP"(를)을 임포트 중 15 행이 임포트
되었습니다
사용 가능한 제약 조건에 관해서...
임포트가 경고 없이 정상적으로 종료되었습니다.

--> SQL*Plus에서 실행


SQL> select count(*) from emp;

COUNT(*)
----------
15

'Program... > Oracle' 카테고리의 다른 글

DB 논리적 모델링 (용어해설)  (0) 2009.03.13
Tablespace 오류복구  (0) 2009.03.13
물리적인 DB관리 (2)  (0) 2009.03.13
물리적인 DB관리 (1)  (0) 2009.03.13
DataBase 정규화  (0) 2009.03.13
Posted by Duritz

공지사항

Yesterday
Today
Total
12-03 07:11

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31