DBDBDEEP
Oracle Data Pump, 데이터 이동 본문
• Oracle Data Pump
개요
- 대량의 데이터/메타 데이터 이동을 위한 고속 export 및 import 유틸리티용 API 포함
- DBMS_DATAPUMP를 통해 호출 할 수 있다.
- 데이터 파일이 서버 측에 생성된다. Original Export/import는 cilent 쪽에 생성
ㄴ---> 서버측에 생성되기 때문에 directory object를 만들어서 관리해야 한다.
Datapump export/import
10.1 이후 사용
- Original과 비교했을때
1. 속도빠름 / 수행 시 필요한 디스크 공간 미리 알 수 있음 / 중지했다가 수행가능
2. 병렬 수행이 가능
- dumpfile은 xml 형식
■ Directory Object
-10g 부터 유틸리티 사용시 서버쪽 경로를 지시하기 위해 반드시 정의해야 하는 object
ㄴ---> create directory e_dir as ‘/home/oracle’;
- 사용자들이 사용할 수 있도록 read 또는 write 권한 부여
sql> grant read, write on directory e_dir to scott;
┏━> expdp system/oracle directory = e_dir dumpfile = expdat.dmp
┗━> impdp
■ Export
- 데이터베이스의 object들을 외부의 덤프화일에 기록한다 (정의,데이터)(select)
옵션
1. Full
- 데이터베이스 전체에 데이터 펌프 적용
---> ex) Full = y
-sys, ORDSYS,MDSYS 스키마 및 관련 권한은 export 하지 않음 -> 나머진 전부 export
-DATAPUMP_EXMP_FULL_DATABASE 롤 필요하다.
2.Schemas
- 설정된 데이터 베이스 유저가 소유한 오브젝트에 대해 데이터 추출(default mode)
- DATAPUMP_EXP_FULL_DATABASE 롤을 가지고 export시 create user 명령도 작성해줌
---> ex) Schemas = sh.hr
3.Tables
- 명시된 테이블에 대해서만 데이터 추출한다.
---> ex) Tables = hr.employees
4. Tablespaces
- 명시된 테이블스페이스에 저장된 오브젝트에 대해서만 데이터 추출
---> ex Tablespace = users, exmaple
5. transport_tablespace = users,example
- 메타 데이터만 export (definition만 export -> dump file size ↓)
6. Full=y, Transportable = always
- DB 전체 definition export (구조만 복사, 데이터는 data file 이용 -> dump file size↓)
7. export시 이전 버전을 지정
- 9.2 이상부터 가능, 해당 버전에서 지원하는 기능만 export
■Import
- export가 생성한 덤프파일의 내용으로 데이터베이스에서 수행한다.
옵션
1. REMAP_SCHEMA
- 적재가 수행되는 데이터베이스에서 object 소유자 변경
ex) REMAP_SCHEMA = hr:sh
2. REMAP_TABLESPACE
- 적재가 수행되는 데이터베이스에서 object가 저장될 테이블 스페이스 변경
3. REMAP_DATAFILES
- 적재가 수행되는 데이터베이스의 테이블스페이스에서 데이터파일의 위치를 변경
Data Pump의 이동방법
1. Direct path load/unload
- 테이블 구조가 Direct path를 허용하고 최대의 단일 스트림 성능이 요구되는 경우
2. External table
- 클러스터화된 테이블, 참조 무결성 제약조건, 암호화된 열 또는 기타 여러항목 있는 경우
Data pump에는 장시간 실행되는 작업에서 작업에 영향을 주지 않고 불리했다가 재연결하는
기능이 있어서 작업 실행중 여러 위치에서 작업을 모니터 할 수 있음.
중단된 모든 Data Pump 작업은 메타정보가 그대로 남아있는 한 데이터 손실 없이 재시작 가능하다. 이것은 자발적으로 중단되었든, 시스템 장애로 중단되었든 관계없다.
Oracle Data Pump 장점
- 세분화된 객체 및 데이터 선택 // EXCLUDE, INCLUDE, CONTENT 파라미터
- 데이터베이스 버전의 명시적 지정 // VERSION 파라미터
- 병렬 실행 // PARALLEL 파라미터
- 엑스포트 작업 공간 소비량 예측 // ESTIMATE_ONLY 파라미터
- 분산 환경의 네트워크 모드
- 재 매핑 기능
- 데이터 샘플링 및 메타 데이터 압축 // COMPRESSION 파라미터
- Data pump 엑스포트 중 데이터 압축
- 암호화를 통한 보안
- XMLType 데이터를 CLOB로 export하는 기능
- 이전 import 및 exprot 파일을 지원하는 레거시 모드
External Table
- 오라클 데이터베이스 외부의 운영 체제에 파일로 저장되는 읽기 전용 테이블이다.
- 데이터베이스 테이블과 같은 방식으로 External 소스의 데이터에 액세스 한다.
-데이터가 External 테이블에 있는 것이 아닌, 외부의 있는 자료를 보여준다.
- SQL*Loader 도 타겟DB에 따로 공간을 할당받는 테이블은 없다. 지시란 곳의 텍스트 파일을 테이블의 데이터 인 것처럼 보여준다.
- SQL*Loader를 사용하는 이유는 외부에 데이터가 있기 때문에 백업/리커버리가 용이해진다
<장점>
1. 병렬 수행 활용이 가능하다
- 테이블은 구조만 있을 뿐이므로 외부의 데이터 파일만 다르게 설정하면 그 테이블의 내용이 달라진다.
2. Table로 부터의 Loading이 불필요하다
- 테이블에 데이터가 존재하는 것이 아니라서 테이블로 부터의 로딩은 없다
3. Storage 절약
- 외부 데이터이기에 공간 절약
4. Virtual read-only Table
- 가상의 테이블로서 오직 읽기 만이 가능. Select, Join, sort, view, Synonym 가능
5. external table간 조인 가능
<단점>
1. index 생성 불가능(파일처리가 빠르기 때문에 필요없음>
2. key 생성 불가
3. join / Filter 수행 어려움
SQL * Loader
- 데이터를 External 파일에서 오라클 데이터베이스의 테이블로 로드한다.
- 데이터 파일의 데이터 형식을 거의 제한하지 않는 강력한 데이터 구문 분석 엔진 보유
SQL Loader 특징
- 하나 이상의 입력 파일을 사용할 수 있다.
- 로드할 때 여러 개의 입력 레코드를 하나의 논리적 레코드로 결합할 수 있다.
- 입력 필드는 고정 길이 또는 가변 길이가 가능하다.
- 테이블의 기존 데이터를 바꾸거나 추가하기 위해 옵션을 사용할 수 있다.
- 데이터베이스 행을 저장하기 전에 SQL 함수를 입력 데이터에 적용할 수 있다.
'Oracle ADMIN' 카테고리의 다른 글
Oracle 데이터베이스 성능관리 (SGA, PGA 관리) (0) | 2022.07.25 |
---|---|
Oracle 데이터베이스 유지관리 (AWR, ADDM, Auto Task) (0) | 2022.07.25 |
Oracle 데이터베이스 감사(Audit) 구현 (0) | 2022.07.24 |
Oracle 데이터 동시성 관리, Lock (0) | 2022.07.24 |
언두 데이터 관리 (0) | 2022.07.21 |