데이터 Export 와 Import
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 EXPORT[편집]
1.1 EXPORT 옵션[편집]
build 데이터 EXPORT 옵션
* userid * buffer * file * grants * indexes * rows * constraints * compress * full * owner * tables * tablespaces * recordlength * inctype * record * parfile
1.2 DB전체 백업[편집]
- conventional Path 로 받기
exp system/oracle full=y log=full_log.log file=/home/oracle/full_test001.dmp
- Direct Path 로 받기
exp system/oracle full=y log=full_log.log file=/home/oracle/full_test001.dmp '''direct=y'''
1.3 파일 분할 백업[편집]
exp system/oracle full=y
'''file=(/backup/test_001.dmp,\
/backup/test_002.dmp,\
/backup/test_003.dmp,\
/backup/test_004.dmp)\'''
filesize=100M
log=full_log.log direct=y
1.4 해당 테이블 스페이스만 백업[편집]
exp system/oracle full=y log=full_log.log file=/home/oracle/full_test001.dmp '''tablespaces=(example,undotbsl)'''
1.5 여러 사용자 백업[편집]
exp system/oracle file=/home/oracle/full_test001.dmp '''owner=(scott,tiger)'''
1.6 일부 테이블 백업[편집]
- 버퍼 10메가
- Direct Path
exp system/oracle full=y log=full_log.log file=/home/oracle/full_test001.dmp buffer=20140000 direct=y '''tables=(example,undotbsl)'''
1.7 일반사용자로 Full Backup[편집]
- 권한확인
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SCOTT';
- 권한부여
GRANT EXP_FULL_DATABASE TO SCOTT;
- DBA권한을 부여 해도 됨(권장하지 않음)
1.8 파라메터를 이용하여 백업[편집]
exp system/oracle '''parfile=para_file.txt'''
- para_file.txt file=/data/test09.dmp full=y direct=y query="where job='xxx' and ... " ....
1.9 SQL적용하여 일부데이터만 백업[편집]
- parfile 옵션을 사용하여 파라메터로 사용하면 편리
exp scott/tiger '''query=\"where ename like \'F%\'\"''' tables=emp file =/data/emp.dmp
1.10 DBMS_DATAPUMP 패키지/프로시져 이용 EXPORT 백업[편집]
-- 1.테이블 DUMP EXPORT 스크립트
DECLARE
hdnl NUMBER;
v_open_date VARCHAR2(50) := '20200102'; -- 백업시간
v_job_name VARCHAR2(50) := 'EXP_XXXWEB_OPEN'; -- 잡이름
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name=>v_job_name||'_'||v_open_date);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => v_job_name||'_'||v_open_date||'_01.EXP', directory => 'DATA_PUMP_DIR2', filetype => dbms_datapump.ku$_file_type_dump_file ,reusefile=>1);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => v_job_name||'_'||v_open_date||'_01.LOG', directory => 'DATA_PUMP_DIR2', filetype => dbms_datapump.ku$_file_type_log_file ,reusefile=>1);
-- 스키마 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => hdnl,
name => 'SCHEMA_EXPR',
value => ' IN (''XXX'',''WEB'')'
);
DBMS_DATAPUMP.START_JOB(hdnl);
END;
2 IMPORT[편집]
- DDL,DML 사용으로 인하여 REDO LOG 와 UNDO SEGMENT사용
- import시 큰 undo Tablespace를 준비하여 작업
- commit=y 옵션으로 작업하여 array 단위로 commit 수행
- DBA 백업 받은 export 파일은 반드시 DBA로 import 해야 함(IMP-00013 에러 발생)
2.1 IMPORT 옵션[편집]
build 데이터 EXPORT 옵션
* userid * buffer * file * show * grants * indexes * rows * full * fromuser * touser * tables * tablespaces * recordlength * inctype * commit * parfile
2.2 DB전체 입력[편집]
- conventional Path 로 받기
imp system/oracle full=y log=full_log.log file=/home/oracle/full_test001.dmp
2.3 일부 사용자만 입력 ==[편집]
imp system/oracle file=/home/oracle/full_test001.dmp '''fromuser=(scott,tiger)''' tables=test01 ignore=y
2.4 테이블 소유자를 변경하여 입력 ==[편집]
imp system/oracle file=/home/oracle/full_test001.dmp '''fromuser=scott''' touser=tiger ignore=y
2.5 DDL만 추출하기 ==[편집]
- show=y 옵션사용 방법 - 로그에 저장하여 ddl 편집
- indexfile 옵션을 사용하는 방법
imp system/oracle file=/data/test02.dmp full=y show=y log=scott_ddl.sql
2.6 import 시 테이블과 index 분리 ==[편집]
- import시 indexes=n 옵션으로 import후 인덱스 별도 생성
2.7 인덱스 파일만 별도 추출 ==[편집]
imp system/oracle file=/data/test02.dmp indexfile=scott_index.sql full=y