관리 메뉴

엉망진창

Export에 의한 백업 본문

Study_DB/DB_Oracle

Export에 의한 백업

엉망진창 2009. 1. 22. 14:24
출처 : http://radiocom.kunsan.ac.kr/lecture/oracle/backup_restore/exp.html
Export에 의한 백업
http://radiocom.kunsan.ac.kr
export 유틸리티는 오라클 DB들 사이에 데이터 객체들을 이동하는 방법을 제공하는 것으로, 익스포트를 실행하면 관련된 객체들(테이블, 인덱스, 뷰등)이 추출되고, 추출된 데이터들이 익스포트 파일로 저장된다.
익스포트 파일은 바이너리 형식의 덤프 파일로 작성되며, 덤프 파일은 import 유틸리티를 사용하여 데이터를 읽어 올 수 있다. 임포트 유틸리티를 실행하지 않고 익스포트파일의 내용을 표시하려면 imp scott/tiger file=expdat.dmp show=Y처럼 SHOW 매개변수를 사용하면 된다.

익스포트는 실행하기 전에 다음과 같이 세가지 작업이 선행되어야 한다.
1) catexp.sql 또는 catalog.sql 스크립트를 실행한다. 두 스크립트는 익스포트를 실행하기 전에 다음과 같은 준비작업을 하는 스크립트이다.

• 필요한 익스포트 뷰 생성
• 필요한 권한들을 EXP_FULL_DATABASE 롤에 부여
• EXP_FULL_DATABASE를 DBA 롤에 부여
• 설치된 catexp.sql 버전 기록

2) 익스포트 파일을 기록할 디스크 공간이 충분한지 확인한다. 필요한 최대 공간의 크기는 데이터 사전의 USER_SEGMENTS 뷰를 사용하여 확인할 수 있다.

	SQL> select sum(bytes) from user_segments
	  2         where segment_type='TABLE';
 
	SUM(BYTES)
	----------
	     65536
 
	SQL> 
3) 익스포트를 실행할 권한이 있는지 확인한다. 익스포트를 실행하기 위해서는 CREATE SESSION과 EXPORT_FULL_DATABASE 롤이 있어야 한다.
(user_role_privsuser_sys_privs 뷰에서 사용자에게 주어진 롤과 권한을 알 수 있다.)


익스포트 실행하기

익스포트를 실행하는 방법은 다음과 같은 세가지 방법이 가능하다.
1) 명령행에서 실행하기

	EXP 키워드=값 또는 키워드=(값1,값2,...)
2) 인터렉티브 모드에서 실행하기
이 방법은 OEM(oracle engterprise manager) Export Wizard에서 실행하는 방법으로 입력된 명령어에 따라 다음과 같은 동작을 수행한다.

입력 동작
exp username/password@instance as sysdba 익스포트 세션 실행
exp username/password@instance 익스포트 세션 실행
exp username/password as sysdba 익스포트 세션 실행
exp username/password 익스포트 세션 실행
exp username@instance as sysdba password입력을 위한 프롬프트
exp username@instance password입력을 위한 프롬프트
exp username password입력을 위한 프롬프트
exp username as sysdba password 입력을 위한 프롬프트
exp / as sysdba password 확인없이 실행
exp / password 확인없이 실행
exp /@instance as sysdba password 확인없이 실행
exp /@instance password 확인없이 실행

3) 매개변수 파일을 사용하여 실행하기
익스포트와 관련된 모든 매개변수들을 파일에 명시하고 저장하여 사용하는 방법으로 다음과 같이 사용한다. 매개변수의 확장자는 .dat이다.

	exp PARFILE=파일이름
	exp username/password PARFILE=파일이름
매개변수 파일은 다음 형식중의 하나처럼 작성할 수 있다.
	PARAMETER=value
	PARAMETER=(value)
	PARAMETER=(value1,value2,...)

다음은 Export 유틸리티에서 사용할 수 있는 매개변수이다.
매개변수기본값 의미
USERID/PASSWORD백업할 사용자 id와 암호를 입력
BUFFEROS 지정 데이터를 읽어올 버퍼의 크기, 0이면 한번에 1행씩 읽음
FILEexpdat.dmp 운영체제상에 저장될 백업 파일명
GRANTSY 백업될 객체의 role과 privilege까지 백업
INDEXSY 백업될 테이블의 인덱스까지 함께 백업
ROWSY 테이블의 행을 백업할 것인지 여부
CONSTRAINTSY 테이블의 제약조건도 포함하여 백업할 것인지 여부
COMPRESSY 객체들의 익스텐트를 하나의 익스텐트로 만들어 백업할 것인지 여부
예를 들어, 50K짜리 3개의 segment를 export하면 IMPORT할 때 150k짜리 하나의 segment를 할당 받음
그러나 N으로 설정하게 되면, 현재의 SEGMENT 크기와 동일하게 50K짜리 3개를 그대로 사용함
FULLN 데이터베이스 전체 데이터를 백업
Y는 전체 DB EXPORT는 EXP_FULL_DATABASE role을 가져야 사용 가능
TRANSPORT_TABLESPACEY 데이터베이스 간에 tablespace를 이동시킬 때 사용
OWNERY 백업할 객체를 소유하고 있는 사용자 ID를 정의
TABLESTABLE mode EXPORT를 위한 schema.TABLE
TABLES=(scott.emp,system.dept)
COMPLETE모든 테이블의 데이터 백업
INCREMENTAL최근에 백업(complete,cumulative,incremental)한 이후의 변경된 테이블만 백업
RECORDSYS.INVID, SYS.INCEXP 테이블에 INCREMENTAL 익스포트 백업 내용을 기록한다.
HELPExport 툴의 옵션을 나열
LOG백업과정에 대한 로그정보를 지정한 파일로 생성
CONSISTENTN 변경중이 테이블이 백업되고 있다면 변경 전 정보를 백업
STATISTICS백업시 객체들의 통계정보를 수집하여 함께 백업함
compute테이블의 모든 행으로 통계정보를 수집
estimate테이블의 일부 행으로 통계정보를 수집
NONE통계정보를 수집하지 않음
DIRECTN Y는 export할 때 DIRECT PATH를 사용토록 지정
N은 export할 때 CONVENTIONAL PATH를 사용토록 함
FEEDBACK(표시않함) 백업도중 정의된 행수가 백업되면 ‘.’으로 표시를 함
RECORDLENGTHO/S 지정 출력 record의 크기, 이 크기는 평가 버퍼에 쓰일 buffer의 크기를 지정
PARLOGN export parameter의 list들을 저장하고 있는 parameter log의 이름을 지정하면 여러 개의 parameter들이 같이 적용

오라클 10g 버전부터는 expdp 유틸리티를 사용하여 서버에 data pump export할 수 있도록 하였다.

keyword 사용시 주의 사항
• FULL=Y, OWNER=user, TABLES=schema.table 파라미터는 export의 mode를 지정하는 parameter로써 함께 사용될 수 없다. 즉, export 실행시 full,table,owner 파라미터는 동시에 사용될 수 없다.
• 같은 parameter 값을 사용하면서 여러 번 export하는 경우 parameter LOG로 저장하여 쓰는 것이 좋다.
• CONSISTENT=Y는 적은 양의 데이터를 export할 때 사용해야 한다.만약 테이블이 큰 경우, ROLLBACK SEGMENT가 계속해서 snapshot을 보관해야 하므로 성능이 저하된다.
• export한 테이블에 삭제되어 사용하지 않는 data block이 많으면 COMPRESS=Y 옵션을 사용하지 않는 것이 좋다. COMPRESS=Y 옵션은 현재 object에 할당된 EXTENT 전부의 크기와 같은 INITIAL EXTENT를 생성하기 때문에 그렇게 하지 않으면 object에 불필요하게 많은 공간을 할당하게 된다.
• DIRECT PATH를 사용하면 성능이 향상된다.


익스포트 모드

익스포트는 다음표와 같이 4가지 익스포트 모드가 있다.
모든 사용자는 테이블모드와 사용자 모드를 사용할 수 있고, EXP_FULL_DATABASE 롤을 소유한 사용자는 4가지 모드를 다 사용할 수 있다.
export 툴로 백업하는 방법은 데이터베이스 전체모드, 테이블스페이스 모드, 사용자 모드, 테이블 모드와 같은 4가지 모드가 있다.

데이터베이스 전체모드 • 전체 database를 export하고자 할 경우에 사용한다.
• database의 object중에서 SYS SCHEMA가 소유한 것을 제외한 모든 OBJECT가 export 된다.
• database mode로 export하려면 EXP_FULL_DATABASE role를 가지고 있어야 한다.
테이블스페이스 모드 지정된 테이블스페이스의 테이블, 테이블의 데이터, 인덱스, 테이블의 제약조건, 트리거, 클러스트, 시퀜스, 스냅샷, 스토어드 프로시져, 시노늄, 뷰, 프로파일.롤, audit
사용자 모드 • 사용자 단위로 export하고자 할 경우에 사용한다.
• 사용자 자신이 소유한 OBJECT만 EXPORT할 수 있다.
• exp_full_database role을 부여 받은 사용자는 다른 사용자의 테이블을 export할 수 있다.
테이블 모드 • table 단위로 export하고자 할 경우에 사용한다.
• 지정된 테이블의 Meta data 즉, data dictionary 정보가 export된다.
• 사용자 자신이 소유한 테이블을 export할 수 있다. 이 때 테이블에 걸려 있는 constraint나 privilege등의 정보도 export된다.
• 옵션(ROWs)에 따라 테이블 내의 ROW를 포함시키거나 배제할 수 있다.
• exp_full_database role을 부여 받은 사용자는 다른 사용자의 테이블을 export할 수 있다.

각 모드에서 익스포트나 임포트할 수 있는 객체의 종류는 다음과 같다.
객체모드
테이블사용자전체DB데이블스페이스
analyze table/statistics0000
auditing information000
B*tree,bitmap,
domain functional indexes
0000
database links00
default roles0
dictionary aliases0
object grants0000
password history0
private synonym00
profiles0
public synonym0
referential integrity constraints000
role grants0
roles0
rollback segment identifiers0
sequence numbers00
system privilege grants0
table constraint
(primary,check,unique)
0000
table data000

각 모드에서 백업할 수 있는 객체를 나열하면 다음과 같다.
데이터베이스 전체모드 • 모든 테이블의 데이터
• 인덱스
• 테이블의 제약조건
• 트리거
• 클러스트
• 시퀀스
• 스냅샷
• 스토어드 포로시저
• 시노님
• 뷰
• 프로파일/롤
• 오디트(audit)
테이블스페이스모드 • 지정된 테이블스페이스의 테이블
• 테이블의 데이터
• 인덱스
• 테이블의 제약조건
• 트리거
• 클러스트
• 시퀀스
• 스냅샷
• 스토어드 포로시저
• 시노님
• 뷰
• 프로파일/롤
• 오디트(audit)
사용자모드 • 지정된 사용자의 테이블
• 테이블의 데이터
• 사용자의 권한
• 사용자의 인덱스
• 테이블의 제약조건
• 테이블의 트리거
• 클러스트
• 데이터베이스 링크
• 스냅샷
• 스토어드 포로시저
• 시노님
• 뷰
테이블 모드 • 지정된 사용자의 테이블
• 테이블의 데이터
• 지정된 사용자의 권한
• 지정된 사용자의 인덱스
• 테이블의 제약조건
• 트리거

오라클 10g 버전부터는 expdp 유틸리티를 사용하여 서버에 data pump export할 수 있도록 하였다. 
【예제】  
$ exp userid=jijoe/joe_password full=y ☜ user mode로 export한 경우
$ exp scott/tiger FILE=exp_scott_dept.dmp LOG=exp_scott_dept.log TABLES=dept ☜ table mode로 export한 경우
$ EXP USERID=SYSTEM/MANAGER FULL=Y ☜ 모든 사용자의 모든 객체(Database Mode)
$ EXP USERID=SYSTEM/MANAGER TRANSPORT_TABLESPACE=Y ☜ 다른 테이블스페이스로 데이터 파일 이동
$ EXP USERID=SYSTEM/MANAGER tablespace='USERS' ☜ Tablespace Mode
$ EXP USERID=SYSTEM/MASNAGER OWNER=SCOTT ☜ scott의 객체만
$ EXP USERID=SCOTT/TIGER TABLES=(SCOTT.DEPT,SCOTT.EMP) ☜ scott의 특정 객체만

$ exp help=Y Export: Release 10.1.0.3.0 - Production on Mon Nov 21 16:12:06 2005 Copyright (c) 1982, 2004, Oracle. All rights reserved. You can let Export prompt you for parameters by entering the EXP command followed by your username/password: Example: EXP SCOTT/TIGER Or, you can control how Export runs by entering the EXP command followed by various arguments. To specify parameters, you use keywords: Format: EXP KEYWORD=value or KEYWORD=(value1,value2,...,valueN) Example: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR) or TABLES=(T1:P1,T1:P2), if T1 is partitioned table USERID must be the first parameter on the command line. Keyword Description (Default) Keyword Description (Default) -------------------------------------------------------------------------- USERID username/password FULL export entire file (N) BUFFER size of data buffer OWNER list of owner usernames FILE output files (EXPDAT.DMP) TABLES list of table names COMPRESS import into one extent (Y) RECORDLENGTH length of IO record GRANTS export grants (Y) INCTYPE incremental export type INDEXES export indexes (Y) RECORD track incr. export (Y) DIRECT direct path (N) TRIGGERS export triggers (Y) LOG log file of screen output STATISTICS analyze objects (ESTIMATE) ROWS export data rows (Y) PARFILE parameter filename CONSISTENT cross-table consistency(N) CONSTRAINTS export constraints (Y) OBJECT_CONSISTENT transaction set to read only during object export (N) FEEDBACK display progress every x rows (0) FILESIZE maximum size of each dump file FLASHBACK_SCN SCN used to set session snapshot back to FLASHBACK_TIME time used to get the SCN closest to the specified time QUERY select clause used to export a subset of a table RESUMABLE suspend when a space related error is encountered(N) RESUMABLE_NAME text string used to identify resumable statement RESUMABLE_TIMEOUT wait time for RESUMABLE TTS_FULL_CHECK perform full or partial dependency check for TTS VOLSIZE number of bytes to write to each tape volume TABLESPACES list of tablespaces to export TRANSPORT_TABLESPACE export transportable tablespace metadata (N) TEMPLATE template name which invokes iAS mode export Export terminated successfully without warnings. $

EXPORT/IMPORT할 때 CHARACTER SET
1) EXPORT
• CONVENTIONAL PATH인 경우에는 USER SESSION에 지정된 CHARACTER SET을 따른 다.
• DIRECT PATH인 경우에는 DATABASE CHARACTER SET을 따른다. 만약, USER SESSION과 DATABASE CHARACTER SET이 다른 경우에는 DIRECT PATH로 사용하면 EXPORT작업은 경고 message와 함께 중지된다.

2) IMPORT
• IMPORT되는 SESSION과 DATABASE의 CHARACTER SET이 다르면 먼저 USER SESSION의 CHARACTER SET으로 변경 시키고 다시 DATABASE CHARACTER SET으로 변경한다.
이는 변경하는데 많은 시간이 걸리며, 또한 일치하는 문자가 없을 경우에는 DATA의 누락이 있을 수 있다.


데이터 딕셔너리 정보 조회

v$instance 현재 운용중인 데이터베이스에 설정된 제한조건에 대한 정보
v$database 현재 데이터베이스의 체크포인트, 아카이브 모드 설정값
v$datafile_header 데이터 파일의 위치와 이름과 헤더 확인
v$log 리두 로그 파일의 시퀀스 번호와 현재 아카이브 상태 확인
v$tablespace 데이터베이스 내의 테이블스페이스의 위치와 이름 확인
v$recover_file 현재 데이터 파일의 온라인 여부 확인
v$backup 데이터 파일의 번호, 현재상태, 시스템 체인지 번호, 데이터 파일의 상태가 변경된 시점
v$datafile_header 데이터 파일의 번호, 현재상태, 생성 시점,저장될 테이블스페이스, 데이터 파일의 위치와 이름