|
Export / Import 이용한 백업과 복구 | 오라클 2005/12/28 10:12
http://blog.naver.com/active9819/40020684261
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
|