ORACLE/ADMIN2010. 2. 26. 15:59
반응형
expdp 사용자/암호 @SID  directory=디렉토리명 dumpfile=파일명  EXCLUDE=TABLE:\"IN \(\'테이블명1\', \'테이블명2\'\)\"

expdp testi/test@SIDTEST directory=dmp dumpfile=expdp_test.dmp EXCLUDE=TABLE:\"IN \(\'EMP1\', \'EMP2\'\)\"

여기서의 관건은 EXCLUDE 다음에 나오는 작은따옴표 앞에 역슬래시가 있어야한다는 사실이다!!!

이거 않넣고 하면 주구 장창

Value for EXCLUDE is badly formed. 이란 메시지를 징글징글하게 볼수 있을것이다.


출처 : http://cubenuri.egloos.com/2326779
반응형

'ORACLE > ADMIN' 카테고리의 다른 글

ORACLE EM 포트 변경 및 관리 명령어  (0) 2010.04.19
ORACLE Datatype Limits  (0) 2010.03.05
sqlplus 환경 설정  (0) 2009.12.09
oracle 권한확인  (0) 2009.12.04
emca 재구성  (0) 2009.11.20
Posted by [PineTree]
ORACLE/ADMIN2009. 4. 2. 09:41
반응형

Data Pump

1.1. Oracle Data pump란?

 

Oracle Data Pump는 Oracle Database 10g 버전에서 제공되는Utility로 향상된 데이터 이동을 가능하게 한다.
이전 버전의 오라클을 설치한 홈 디렉토리에는 ‘imp’,’exp’라는 실행 파일이 있다. 이는 오라클에서 제공하는 backup 및 recovery 에 사용되는 도구 이다.
Exp는 데이터베이스에 저장되어 있는 데이터들을 OS의 바이너리 파일로 전환하는 도구이고, imp는 바이너리 파일을 데이터베이스 안의 데이터로 전환하는 도구이다. 새로 등장한Data Pump는 exp 와 imp를 대체하기 위하여 오라클 10g 버전부터 제공되는 유틸리티로 Exp / Imp 와 유사한 동작을 하지만 data pump 가 훨신 효율적으로 동작한다.
Exp/Imp와 비교하여 그 효율성을 예를 들자면 exp시 single thread 에서 2배가 빠르고 imp시 15~45배 빠르므로 데이터베이스간의 bulk data 와 meta data의 전송시간을 줄이는데 효율적으로 사용될 수 있다.

 

1.2. Data pump Key features

 

1.2.1. Fast Performance

앞에서 말한 것과 같이Data Pump Export and Import 유틸리티는 기존의 Export and Import 유틸리티보다 훨씬 빠르다. Data Pump Export 에서 direct path method를 사용시 single stream data unload에서 기존의 export 보다 2배가 빠르다. 이는 direct path API가 더 효과적으로 수정 되었기 때문이다. Parallelism 의 level에 따라서는 더욱 향상된 performance를 보일 수 있다.

 

Data pump import 에서는 single stream 의 data load 시 기존의 import 보다 15~45배가 빠르다. 이는 기존의 import 에서 단순히 export dump파일에서 레코드를 읽고 일반적인 insert into 명령을 사용해서 대상 테이블에 삽입 하는 대신에 Data pump import 는Direct path method loading 을 사용하기 때문이다.


 

1.2.2. Improved Management Restart


 

모든 Data Pump operation은 Data Pump job을 실행하는 스키마에 만들어진 master table을 가지고 있다. Master table은 현재 수행중인 모든 export또는 import시 객체의 상태정보와 dump file set에서의 위치정보를 가지고 있다. 이는 갑작스런 job의 중단에도 job 의 성공적인 종료에 상관 없이 어떤 object의 작업이 진행 중이었는지 알 수 있게 해 준다. 그래서 master table 과 dump file set 이 있는 한 모든 정지된 data pump job은 데이터 손실 없이 다시 시작할 수 있다.

 

1.2.3. Fine-Grained Object Selection

 

Data Pump job 은 거의 모든 type의 object를 exclude 또는 include 시킬 수 있다.
아래의 parameter 가 사용된다.
* EXCLUDE - 특정 객체 유형을 제외한다. (예: EXCLUDE=TABLE:EMP)
* INCLUDE - 특정 객체 유형을 포함한다. (예: INCLUDE=TABLE_DATA)
* CONTENT - 로드를 취소할 데이터를 지정한다.
적합한 키: (ALL), DATA_ONLY 및 METADATA_ONLY.
* QUERY - 테이블의 부분 집합을 엑스포트하기 위해 사용되는 술어 절이다.

 

1.2.4. Monitoring and Estimating Capability

 

Data Pump는 Standard progress , error message를 log file에 기록할 뿐만 아니라 현재 operation의 상태를 대화식모드 ‘command line’으로 보여 준다. Job의 completion percentage를 측정하여 보여주며 초 단위의 지정한 time period에 따라 자동으로 update하여 표시한다.

1개 이상의 client가 running job에 attach 수 있기 때문에 업무환경에서 job을 실행하고, detach 한 후 집에 가서 job을 reattach 하여 끊김 없이 모든 job을 모니터링 할 수 있다.
모든export job이 시작할 때 대략적인 전체unload양을 측정해 준다. 이는 사용자가 dump file set을 위한 충분한양의 disk space를 할당할 수 있게 한다.

 

1.2.5. Network Mode

 

Data Pump Export and Import는 job의 source가 리모트 인스턴스 일 경우를 위한 network mode를 지원한다.

 

Network을 통해 import를 할 때 source가 dump file set이 아닌 다른 database에 있기 때문에 dump file이 없다.

 

Network를 통해 export를 할 때 souce가 다른시스템에 있는 read-only database 일 수 있다. Dumpfile은 local(non-networked)export 처럼 local 시스템에 쓰이게 된다.

 

1.3. Data pump overview

 

1.3.1. Data Pump Overview

 

- expdp/impdp로 제공 되어 진다.
- exp/imp의 superset 이다.
- Data 와 metadata를 매우 빠른 속도로 load/unload 하는 Server-based facility이다.
                    ==> dump file sets은 Server에 생성
- DBMS_DATAPUMP PL/SQL Package를 이용하여 사용 가능 하다.
- Web-based interface <--access from EM Database Control이 가능하다.
- Data Pump job을 실행하는 schema에 master table(MT)이 만들어 진다.

MT는 해당 job의 모든 것(aspects)을 관리하며 data pump(expdp)의 마지막 단계에서 pump file sets에 기록된다.


file based import 작업(impdp)시 dump file에 있는 MT 내용을 current user의 schema에 제일먼저 loading한다.


계획 또는 예상치 못한 job의 중단 시 재가동수 있게 하는 Data Pump의 핵심이 MT 이다.



Client process는 Data Pump API를 call한다.


-여러 개의 clients가 모니터링하고 control하기 위해서 job을 attach/detach 한다.

 

1.3.2. Data Pump Benefit

 

- Data Access Methods : Direct Path, External Tables
- Detach from, reattach to log-running jobs
- Restart Data Pump Jobs
- Find-grained object selection <-- 원하는 rows만(EXCLUDE, INCLUDE, CONTENT)
- Explicit database version specification
- Parallel execution
- Estimate export job space <--ESTIMATE_ONLY
- Network Mode에서는 Remote의 server process가 DB link를 이용하여 Local에 dump file을 직접 만들어 준다..
- Import 과정에서 target data file name, schema, tablespace 을 변경할 수 있다.

1.3.3. Data Pump File Locations

 

- Data pump file 종류

- DUMP file : data와 metadata를 포함한다.
- LOG file : operation과 관련된 message를 기록한다.
- SQL file : impdp에서 SQLFILE operation의 결과를 기록한다.
- Data Pump는 server-based 이므로 Oracle directory path를 통해서 Data Pump file에 access한다.
Absolute path는 보안상 지원되지 않는다.

- Order of precedence of file locations

 

1) per-file directory
- dump file, log file, sql file 마다 지정될 수 있다. 콜론(:)으로 directory 와 file name 을 구분한다.
예) dumpfile=AA:A.dmp

 

2) DIRECTORY parameter

- directory object를 사용한다.
Create Directory DIR_PJH as '/home/oracle10g/test/';
Grant read, write On Directory DIR_PJH to SCOTT;
Directory=AA
Dumpfile=A.dmp


3) DATA_PUMP_DIR 환경변수

- DIRECTORY Parameter를 대신하여 directory object name을 설정한다.
export DATA_PUMP_DIR=AA
Dumpfile=A.dmp
- 위의 모든 경우에 시도하려는 operation에 대해 directory object에 대해 적절한 access privs가 있어야 한다.
Export할 경우 모든 file에 대해 write access가 필요하다.
Import할 경우 dump file에 대해 read access, log file과 sql file에 대해 write access가 필요하다.

 

1.3.4. Data Pump File Naming and size

 

(1) DUMPFILE
- file list는 , 로 분리한다.
- %U template --> two-character, fix-width, 01부터 증가하는 integer 를 가진다.
- DUMPFILE 이 지정되어 있지 않으면 expdat.dmp 가 default로 사용된다. Default는 autoextensible이다.

 

(2) FILESIZE
- FILESIZE 가 지정되어 있으면 각 file은 FILESIZE안으로 만들어지고 늘어날 수 없다. dump 공간이 더 필요하고 template %U가 지정되었다면, 새로운 파일이 생성된다. 그렇치 않으면 사용자는 new file을 add하라는 메세지를 받는다.

 

(3) PARALLEL
- %U가 지정되면 PARALLEL parameter의 개수만큼 초기에 file이 생성된다.
- 기존에 존재하는 file과 이름이 중복될 경우 overwrite하지 않고 에러를 발생시키고 job이 abort된다.
- 복수개의 dump file template가 제공되면 round-robin fashion으로 dump file을 생성하는 데 사용한다.

 

1.3.5. Data Pump Filtering

 

(1) Find-grained object selection
- 기존의 exp/imp는 index, trigger, grant, constraint를 포함하거나 제외하는 것이 있으나
data pump는 virtually any type of object를 포함하거나 제외할 수 있다.
- EXCLUDE 와 IMCLUDE는 mutually exclusive 하다.
- INCLUDE = object_type[:"name_expr"]
- EXCLUDE = object_type[:"name_expt"]
- 모든 view, 모든 package, EMP로 시작하는 Index만 제외한다.
EXCLUDE=view
EXCLUDE=package
EXCLUDE=INDEX:"LIKE 'EMP%' "

 

(2) Data Selection
- CONTENT = ALL(def) | METADATA_ONLY | DATA_ONLY
- QUERY = [Schema.][table_name:]"query_clause"
- CONTENT에 data_only가 사용되면 EXCLUDE 와 INCLUDE를 사용할 수 없다.QUERY=hr.employees:"WHERE department_id in (10,20) and salary < 1600 ORDER BY department_id"
    <--특정 table을 지정해서 해당 table로 한정. imp시에도 적용.

 

1.3.6. Data Pump Job Monitoring

 

- 데이터베이스 뷰에서 실행되는 Data Pump 작업에 관해서도 자세한 정보를 확인할 수 있다.
- DBA_DATAPUMP_JOBS – 작업에서 실행되는 작업자 프로세스(DEGREE 열)의 수를 확인 할 수 있다.
- DBA_DATAPUMP_SESSIONS –이전 뷰 및 V$SESSION과 조인하여 foreground 프로세스 세션의 SID확인 할 수 있다.

 

select sid, serial#
from v$session s, dba_datapump_sessions d
where s.saddr = d.saddr;


- V$SESSION_LONGOPS - 작업 완료에 걸리는 시간을 예측하는 또 다른 유용한 정보를 얻을 수 있다.

select sid, serial#, sofar, totalwork
from v$session_longops
where opname = 'CASES_EXPORT' and sofar != totalwork;

totalwork 열에는 총 작업량이 표시되는데, 이 중 현재까지 sofar 작업량을 완료했으므로 이를 통해 얼마나 더 시간이 걸릴지 예측할 수 있다.

 

1.3.7. Data Pump Export and Import

 

1) Parallel Full Export and Import

> expdp system/manager full=y parallel=4
dumpfile=DATADIR1:full1%U.dat,
DATADIR2:full2%U.dat,
DATADIR3:full3%U.dat,
DATADIR4:full4%U.dat
filesize=2G

 

<--4개의 work process를 가진 full export,
Pump file은 DATADIR1, DATADIR2, DATADIR3, DATADIR4 네 곳에 라운드로빈 방식으로 생성된다.
2G를 넘지 않으면서 최소4개 생성.
Job 과 master table 이름은 default로 SYSTEM_EXPORT_FULL_01 를 가진다.

 

>impdp system/manager directory= NET_STORGAE_1 parallel=4
dumpfile= full1%U.dat,
full2%U.dat,
full3%U.dat,
full4%U.dat

 

<--expdp로 받은 dump file을 network를 통해 NET_STORAGE_1 이라는 directory object위치로 보내졌다. Default import는 dump set 전체를 import하는 것이므로 Full=y 는 필요 없다.
Job 과 master table 이름은 default로 SYSTEM_IMPORT_FULL_01 를 가진다.

 

2) Limited Schema Export (fine-grained)

incluse=function include=procedure include=pacakge include=type include=view:"like 'PRODUCT%'"
> expdp system/manager schemas=hr,oe
directory=USR_DATA
dumpfile=schema_hr_oe.dat
parfile=exp_par.txt <----------------------------

 

<--HR, OE schema에서 모든 func, prod, pkg, user-defined type, PRODUCT로 시작하는 view를 export한다.
Schema definition과 system priv graints는 export되지 않는다.

 

> impdp system/manager directory=USR_DATA
dumpfile=schema_hr_oe.dat
sqlfile=schema_hr_oe.dat

 

<--실제 import는 하지 않고 dmp file에서 DDL 문장만 뽑아낸다.

 

3) Network Mode Import (DB Link)

network_link=finance.hq.com <--db link
remap_schema=payroll:finance

> impdp system/manager schemas=hr,sh,payroll
parfile=imp_par.txt <--------------------------------

<--Source DB에 dblink로 붙어서 hr, sh, payroll schema를 가져온 다음 imp 한다.
이때 payroll schema로 finance schema로 만들어 진다.
SYSTEM은 IMPORT_FULL_DATABASE role을 가지고 있고 Source DB에 대해서는 EXPORT_FULL_DATABASE role을 가지므로 Target DB에 해당 schema definition이 없으면 만들어진다.
flashback_time은 예전의 CONSISTENT와 동일하다.

 

4) Data-Only Unload

> expdp hr/hr parfile=exp_par.txt dumpfile=expdat.dmp content=data_only
include=table:"in ('DEPARTMENTS','DEPARTMENTS_HIST','EMPLOYEES','EMP_HIST')"
query="where DEPARTMENT_ID != 30 order by DEPARTMENT_ID"

 

1.3.8. Data Pump restarting

 

1) Attaching to Existing Job
> expdp system/manager attach=EXP_TS1


<--Job name(MT name) :dba_datapump_jobs
해당 스키마에 active export job 이 하나만 있을 경우 안 적어도 된다..

job: EXP_TS1
owner: SYSTEM
mode:
status:
Export> STOP_JOB
<--중지.
Attach session은 terminate 되고 실행되던 job은 controlled fashion으로 run down 된다.

해당 Job은 dump file과 SYSREM.EXP_TS1 table이 disturbed 되지 않는 한 startable 하다.

 

2) Restarting Stopped Job

> expdp system/manager attach=exp_ts1
<--같은 schema안에 여러 개의 outstanding job이 있으면 job name지정한다.

Export> parallel=4
Export> start_job
Export> status =600 <--10분

<-- detailed per-work process가 10분 단위로 regular status message를 보여준다.
KILL_JOB로 job을 kill한다.

<--status, status=600(초)
stop_job,
start_job,
continue_client: attach한 session이 계속 받아서 expdp 실행한다.(logging mode로 전환)
exit_client: Attach를 빠져 나옴. expdp는 background로 실행한다.

 

1.4. Data pump 실습

 

1.4.1. 전체 데이터베이스 export 실습

 

SQL> conn /as sysdba
연결되었습니다.

SQL> create directory dump as 'C:₩oracle/backup'; ->directory를 생성한다.

 

디렉토리가 생성되었습니다.
SQL> grant read ,write on directory dump to public; -> directory에 권한을 부여한다.

 

권한이 부여되었습니다.

 

SQL> host

Microsoft Windows XP [Version 5.1.2600]

(C) Copyright 1985-2001 Microsoft Corp.
C:₩oracle>expdp system/oracle dumpfile=full.dmp directory=dump full=y job_name=Lucie

Export: Release 10.2.0.1.0 - Production on 화요일, 29 5월, 2007 17:17:41

Copyright (c) 2003, 2005, Oracle. All rights reserved.

접속 대상: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
"SYSTEM"."LUCIE" 시작 중: system/******** dumpfile=full.dmp directory=dump full=y job_name=Lucie
BLOCKS 메소드를 사용하여 예측 진행 중...
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 처리 중
BLOCKS 메소드를 사용한 총 예측: 66.56 MB ->대략적인dmp파일 size를 예측할 수 있다.
객체 유형 DATABASE_EXPORT/TABLESPACE 처리 중
객체 유형 DATABASE_EXPORT/SYS_USER/USER 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/USER 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ 처리 중

. . "SCOTT"."DEPT" 48.00 MB 2097152행이 엑스포트됨
. . "SYSMAN"."MGMT_JOB_CRED_PARAMS" 11.70 KB 18행이 엑스포트됨
. . "SYSMAN"."MGMT_JOB_PROP_PARAMS" 8.820 KB 12행이 엑스포트됨
. . "SYSMAN"."MGMT_JOB_STEP_PARAMS" 127.3 KB 1128행이 엑스포트됨

 

Control + c ->중간에 끊어도 job이 끊기지 않고 명령모드로 들어간다.

 

Export>status
작업: LUCIE
작업: EXPORT
모드: FULL
상태: EXECUTING
처리된 바이트: 50,337,376
완료율: 84 -> 진행률을 알 수 있다.
현재 병렬도: 1
작업 오류 수: 0
덤프 파일: C:₩ORACLE₩BACKUP₩FULL.DMP
기록된 바이트: 55,226,368

작업자 1 상태:
상태: EXECUTING
객체 스키마: SYSMAN
객체 이름: MGMT_JOB_EXECUTION
객체 유형: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

완료된 객체: 45
총 객체: 408
작업자 병렬도: 1

Export> stop_job -> job 을 정지시킨다.
이 작업을 정지하겠습니까([예]/아니오):

 

C:₩oracle>

C:₩oracle>sqlplus "/as sysdba"

 

SQL*Plus: Release 10.2.0.1.0 - Production on 화 5월 29 17:32:59 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

다음에 접속됨:

 

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options

SQL>select owner_name,job_name,operation,job_mode,state from dba_datapump_jobs;
OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE
---------- ---------- ------------ ----------- ------------
SYSTEM LUCIE EXPORT FULL NOT RUNNING
                                 ->job 상태를 확인할 수 있다.

SQL> exit

 

C:₩oracle>expdp system/oracle attach=lucie ->job을 다시 attach한다.

Export: Release 10.2.0.1.0 - Production on 화요일, 29 5월, 2007 17:35:54

 

Copyright (c) 2003, 2005, Oracle. All rights reserved.

접속 대상: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options

 

작업: LUCIE
소유자: SYSTEM
작업: EXPORT
생성자 권한: FALSE
GUID: 18405C1B820C4ABB9B30C4948E0D356F
시작 시간: 화요일, 29 5월, 2007 17:35:56
모드: FULL
인스턴스: ora10
최대 병렬도: 1
EXPORT 작업 매개변수:
매개변수 이름 매개변수 값:
  CLIENT_COMMAND    system/******** dumpfile=full.dmp directory=dump full=y job_name=Lucie
상태: IDLING
처리된 바이트: 51,646,000
완료율: 99
현재 병렬도: 1
작업 오류 수: 0
덤프 파일: C:₩oracle/backup₩full.dmp
기록된 바이트: 55,914,496

작업자 1 상태:
상태: UNDEFINED

 

SQL>select owner_name,job_name,operation,job_mode,state from dba_datapump_jobs;
OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE
---------- ---------- ------------ ----------- ------------
SYSTEM LUCIE EXPORT FULL IDLING
                            ->job 상태를 확인할 수 있다.

Export> start_job ->Job을 다시restar한다.

Export> status

작업: LUCIE
작업: EXPORT
모드: FULL
상태: COMPLETING
처리된 바이트: 51,646,001
완료율: 100
현재 병렬도: 1
작업 오류 수: 0
덤프 파일: C:₩oracle/backup₩full.dmp
기록된 바이트: 64,684,032

작업자 1 상태:
상태: WORK WAITING

C:₩oracle>

 

Logfile 확인

 

지정한 directory 위치에 “export” log file을 확인 한다. 파일의 끝부분을 보면 성공적으로 완료됨을 확인할 수 있다.

"SYSTEM"."LUCIE" 작업이 17:18:56에서 사용자 요청에 의해 정지됨
LUCIE 작업이 화요일, 29 5월, 2007 17:35 에서 다시 열림 ->작업을 정지했다 다시 시작한 것을 확인 할 수 있음


"SYSTEM"."LUCIE" 재시작 중: system/******** dumpfile=full.dmp directory=dump full=y job_name=Lucie
마스터 테이블 "SYSTEM"."LUCIE"이(가) 성공적으로 로드됨/로드 취소됨
******************************************************************************
SYSTEM.LUCIE에 대해 설정된 덤프 파일:
C:₩oracle/backup₩full.dmp
"SYSTEM"."LUCIE" 작업이 17:37:12에서 성공적으로 완료됨

 

1.4.2. 특정 스키마 DDL 스크립트 생성 실습

 

SQL> conn /as sysdba
연결되었습니다.


SQL> create directory dump as 'C:₩oracle/backup'; ->directory를 생성한다.
디렉토리가 생성되었습니다.

SQL> grant read ,write on directory dump to public; -> directory에 권한을 부여한다.
C:₩oracle>impdp system/oracle directory=dump dumpfile=full.dmp schemas=scott sqlfile=ddl_scott.sql
<이 명령은 dump로 지정된 디렉터리에 ddl_scott.sql로 명명된 파일을 생성하며 엑스포트 덤프 파일 내의 객체 스크립트를 생성한다.>


Import: Release 10.2.0.1.0 - Production on 화요일, 29 5월, 2007 19:12:13

Copyright (c) 2003, 2005, Oracle. All rights reserved.

접속 대상: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
마스터 테이블 "SYSTEM"."SYS_SQL_FILE_SCHEMA_01"이(가) 성공적으로 로드됨/로드 취소됨


"SYSTEM"."SYS_SQL_FILE_SCHEMA_01" 시작 중: system/******** directory=dump dumpfile=full.dmp schemas=
scott sqlfile=ddl_scott.sql
객체 유형 DATABASE_EXPORT/SCHEMA/USER 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/ROLE_GRANT 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS 처리 중
"SYSTEM"."SYS_SQL_FILE_SCHEMA_01" 작업이 19:12:22에서 성공적으로 완료됨

 

Logfile 확인

 

- dump로 지정된 C:₩oracle/backup에 ddl_scoot.sql파일이 생성된다.

 

-- CONNECT SYSTEM
-- new object type path is: DATABASE_EXPORT/SCHEMA/USER
CREATE USER "SCOTT" IDENTIFIED BY VALUES 'F894844C34402B67'
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP";
-- new object type path is: DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
GRANT UNLIMITED TABLESPACE TO "SCOTT";
GRANT CREATE SESSION TO "SCOTT";
-- new object type path is: DATABASE_EXPORT/SCHEMA/ROLE_GRANT
GRANT "RESOURCE" TO "SCOTT";
-- new object type path is: DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
ALTER USER "SCOTT" DEFAULT ROLE ALL;
-- new object type path is: DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA
-- CONNECT SCOTT
BEGIN
sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','CURRENT_SCHEMA'), export_db_name=>'ORA10', inst_scn=>'283762');
COMMIT;
END;
/
-- new object type path is: DATABASE_EXPORT/SCHEMA/TABLE/TABLE

-- CONNECT SYSTEM
CREATE TABLE "SCOTT"."EMP"
( "EMPNO" NUMBER(4,0) NOT NULL ENABLE,
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;
CREATE TABLE "SCOTT"."DEPT"
( "DEPTNO" NUMBER(2,0),
"DNAME" VARCHAR2(14),
"LOC" VARCHAR2(13)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;

 

1.4.3. 존재하는 table import

 

1) content=data_only 포함한 경우

 

C:₩oracle>Impdp system/oracle dumpfile=full.dmp directory= dump content=data_only job_name=data_import logfile=table_log tables=scott.dept

Import: Release 10.2.0.1.0 - Production on 화요일, 29 5월, 2007 19:42:15

Copyright (c) 2003, 2005, Oracle. All rights reserved.

접속 대상: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
마스터 테이블 "SYSTEM"."DATA_IMPORT"이(가) 성공적으로 로드됨/로드 취소됨
"SYSTEM"."DATA_IMPORT" 시작 중: system/******** dumpfile=full.dmp directory= dump content=data_only
job_name=data_import logfile=table_log tables=scott.dept
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 처리 중
. . "SCOTT"."DEPT" 48.00 MB 2097152행이 임포트됨
"SYSTEM"."DATA_IMPORT" 작업이 19:42:52에서 성공적으로 완료됨

 

2) content=data_only 포함하지 않은 경우

 

C:₩oracle>Impdp system/oracle dumpfile=full.dmp directory= dump job_name=data_import logfile=table_log tables=scott.dept

Import: Release 10.2.0.1.0 - Production on 화요일, 29 5월, 2007 19:41:02

Copyright (c) 2003, 2005, Oracle. All rights reserved.

접속 대상: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the OLAP and Data Mining options
마스터 테이블 "SYSTEM"."DATA_IMPORT"이(가) 성공적으로 로드됨/로드 취소됨
"SYSTEM"."DATA_IMPORT" 시작 중: system/******** dumpfile=full.dmp directory= dump job_name=data_impo
rt logfile=table_log tables=scott.dept
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE 처리 중
ORA-39151: "SCOTT"."DEPT" 테이블이 존재합니다. 건너 뛰기 table_exists_action으로 인해 모든 종속 메타 데이터 및 데이터를 건너 뜁니다.
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 처리 중
객체 유형 DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS 처리 중
"SYSTEM"."DATA_IMPORT" 작업이 1 오류와 함께 19:41:09에서 완료됨
* 임포트 프로세스의 기본 작업 방식은 테이블 및 연관된 모든 객체를 생성하고 테이블이 있는 상태에서 오류를 만들어 낸다.

 

* 임포트 프로세스의 기본 작업 방식은 테이블 및 연관된 모든 객체를 생성하고 테이블이 있는 상태에서 오류를 만들어 낸다.

 

 

다음 명령은 대화형 모드에서 적합합니다.
참고: 약어도 허용됨

 

 

 

다음 명령은 대화형 모드에서 적합합니다.
참고: 약어도 허용됨

 

 

 

출처 : GOODUS

제공 : DB포탈사이트 DBguide.net

반응형
Posted by [PineTree]
ORACLE/Migration2008. 11. 7. 15:03
반응형


  

7. Data Pump Import 모드

   지금 까지  Data Pump Export 대해 자세히 알아 보았습니다. 데이터베이스 내에 있는 오브

   젝트를 운영체제 파일시스템으로 옮기는 작업을 Data Pump Export 라고 한

   다면 Data Pump Import 작업은 운영체제 파일시스템에 있는 오브젝트 들을 데이터 베이스

   내의 테이블로 옮기는 작업 입니다.  impdp 명령어를 통하여 사용할 수 있으며,

   Data Pump Import 작업에서 처럼 Command 라인, par 파일, Interactive Mode 모두 사용 하

   실 수 있습니다.

 

    1) 파일 및 디렉토리 관련 파라메타

      

 

impdp dangtong/edu2006 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmpSCHEMAS=SCOTT

 

       과 같이 DIRECTORY 는 디렉토리 오브젝트를 받는 파라메타 이고 DUMPFILE 파라메타

       는 Import 될 파일명, SQLFILE 은 작업 수행동안 수행될 DDL문을 저장할 파일이름

       이며, 디렉토리 관련 파라메타 로 설정 됩니다.

    2) 필터링 관련 파라메타

       필터링 파라관련 파라메타 에는 COTENT,INCLUDE,EXCLUDE,TABLE_EXISTS_ACTION 파라메

       터가 있습니다. COTENT,INCLUDE,EXCLUDE 파라메타는 Export 와 마찬가지로 사용 하

       실수 있으며,TABLE_EXISTS_ACTION 파라메타는 오직 Import 작업시에만 사용 할 수 있

       습니다.

        COTENT : CONTENT 파라메타는 DATA_ONLY,ALL,METADATA_ONLY 3가지 값을 가질 수 있

       으며, CONTENT=DATA_ONLY 형식으로 사용 하실 수 있습니다.

       

 

impdp dangtong/edu2006 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp

SCHEMAS=SCOTT CONTENT=DATA_ONLY

 

        INCLUDE : INCLUDE=OBJECT_NAME:"='조건'" 형식으로 사용하실 수 있으며, 오브

       젝트의 종류에는 앞서 배운 것 과 같이 TABLE,INDEX,PORCEDURE,FUNCTION 등이 있습

       니다.

       

 

impdp dangtong/edu2006 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp

SCHEMAS=SCOTT INCLUDE=TABLE:"='SAL'"

 

       SCOTT 유저의 테이블을 Import 하되 SAL 테이블 만 포함 시키라는 명령 이 됩니다

       SCOTT 유저가 EMP,SAL,SALARY 3개의 테이블을 가졌다고 가정하고 하나의 덤프파일에

       3개의 테이블을 Export 받았고, 위와 같은 import 명령을 내린다면 3개의 테이블중

       오직 SAL 테이블 만을 Import 하게 됩니다.

        EXCLUDE : EXCLUDE=OBJECT_NAME:"='조건'" 형식으로 사용하실 수 있으며, 마찬가지

       로 오브젝트 종류는 INCLUDE 와 같습니다.

 

       

 

impdp dangtong/edu2006 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp

SCHEMAS=SCOTT EXCLUDE=TABLE:"='SAL'"

 

       SCOTT 유저의 테이블을 Import 하되 SAL 테이블을 제외한 나머지 테이블을 Import

       하라는 명령이 되겠죠? 마찬가지로 SCOTT 유저가 EMP,SAL,SALARY 3개의 테이블을 가졌

       다고 가정하고 하나의 덤프파일에 3개의 테이블을 Export 받았고, 위와 같은 import

       명령을 내린다면 3개의 테이블중 SAL 을 제외한 EMP,SALARY 테이블만 Import 될 것

       입니다.

        TABLE_EXISTS_ACTION : Import 시에 중요한 옵션입니다. 우리가 Data Pump 를 통

       해 작업을 하게될 경우 같은 이름의 테이블이 존재할 때가 있습니다. 만약 테이블이

       존재 하더라도 Import 하고자 하는 데이터의 row 수가 다를 수고 있고 같을 수도 있

       을 겁니다. 즉, 테이블은 존재하지만 데이터의 내용은 차이가 난다는 거죠.

       이러한 경우에 사용할 수 있는 유용한 파라메타가  TABLE_EXISTS_ACTION 입니다.

       TABLE_EXISTS_ACTION 파라메타는  SKIP,APPEND,TRUNCATE,REPLACE 의 값을 가질수 있으

       며 각 값의 의미는 다음과 같습니다.

       - SKIP     : 같은 테이블을 만나면 지나치고 다음 테이블을 Import 합니다.

       - APPEND   : 같은 테이블을 만나면 기존의 데이터에 추가하여 Import 합니다.

       - TRUNCATE : 같은 테이블을 만날경우 기존의 테이블을 TRUNCATE 하고 새로운 데이

                    터를 Import 합니다.

       - REPLACE  : 같은 테이블을 만날 경우 기존의 테이블을 DROP 하고 테이블을 재생성

                    한후 데이터을 Import 합니다.

       

 

impdp dangtong/edu2006 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp

SCHEMAS=SCOTT TABLE_EXISTS_ACTION=SKIP  

 

       위와 같이 실행하면 같은 테이블을 만날경우 그냥 지나치고 다른 테이블을 Import

       하겠죠?

      2) JOB 관련 파라메타

       앞서 학습한 JOB_NAME,STATUS,PARALLEL 파라메타를 Export 와 같은 방법으로 사용

       하실 수 있습니다. Export 와 마찬가지로 PARALLEL 작업시에 dumpfile 의 개수를

       %u를 사용하여 지정하여 주거나, 명시적으로 ','를 사용하여 PARALLEL 개수 만큼

       파일을 지정 하셔야 합니다.

 

      3) 리맵핑 관련 파라메타

      리맵핑 관련 파라메타에는 REMAP_SCHEMA,REAMP_DATAFILE,REMAP_TABLESPACE 가 있으며,

      이들 파라메타 를 통하여 우리는 다른 데이터베이스 로 Import 시에 많은 유연성을 제

      공 받을 수 있습니다.

       REMAP_SCHEMA : A 유저 스키마로 Export 받은 데이터를 B 유저 스키마로 Import 하

      고자 할때 사용 합니다.

      

      

 

impdp dangtong/edu2006 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp

SCHEMAS=SCOTT REMAP_SCHEMA=SCOTT:DANGTONG

 

      위와 같이 수행한후 TABLE의 OWNER 을 조회 한다면 DANGTONG 유저의 소유로 테이블

      이 등록 되었음을 확인 하실수 있습니다.

       REMAP_DATAFILE : 전체 데이타베이스 시스템을 Data Pump 를 통하여 옮기고자 할때

      Export 된 daumfile 에는 DataFile 정보까지 포함하게 됩니다. 하지만 다른시스템의

      디스크 경로 상에는 존재하지 않는 경로이기 때문에 Import에 실패하게 됩니다. 이러한

      경우에 사용 할 수 있는 파라메타가 REAMP_DATAFILE 입니다. Export 된 dumpfile 이

      Datafile 정보를 포함한 경우에만 해당합니다.

      

 

impdp dangtong/edu2006 FULL=Y DIRECTORY=datapump_dir1

DUMPFILE=datapump.dmp 

REMAP_DATAFILE='/db1/data/lvol01':'/db2/data/lvol01',

               '/db1/data/lvol02':'/db2/data/lvol02'     

                                .

                                .

                                .

 

 

       REMAP_TABLESPACE : Export 받은 데이터 속한 TABLESPACE에서 다른 테이블 스페이

      스로 REMAPPING 하고 하는 경우 사용할 수 있응 파라메타 입니다.

      

 

impdp dangtong/edu2006 REMAP_TABLESPACE='scott_tsb':'dangtong:tbs'

DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp SCHEMAS=SCOTT

 

      4) 네트웍 링크 파라메타

      Export 에서와 마찬가지로 DB LINK를 이용하여 원격지 데이터베이스에 대해 Import

      작업을 수행할 수 있습니다.

 

      5) Interactive mode 파라메타

      Export 에서와 마찬가지로 Ctrl + C 를 통하여 Interactive mode 로 진입할 수 있으며

      작업을 통제 할 수 있습니다.

 

   8. Data Pump 모니터링 하기  

   이번 장에서는 SQL을 통한 작업 모니터링 방법에 대하여 학습해 보도록 하겠습니다.

   작업의 진행 경과와 작업속성들 그리고 얼마나 많은 작업들이 존재 하는가를 알 수

   있습니다.

      1) 관련 조회 테이블 및 VIEW 들

     

          DBA_DATAPUMP_JOBS 현재 실행중인 작업의 속성들을 살펴 볼 수 있는 테이블

            입니다.

         SQL> select * from dba_datapump_jods;

         로 조회 하시면  다음과 같은 컴럼이 나옵니다.

         - OWNER_NAME  : DB 작업 계정

         - JOB_NAME    : 작업의 명칭

         - JOB_MODE,   : FULL,TABLE,INDEX,TABLESPACE 등이 있습니다.

         - STATE       : EXECUTING(수행중),DEFINING ,UNDEFINED, NOT RUNNING 의 값을

                         가집니다.

          Pump Session 확인

        Select sid,serial# from v$session session,dba_data_session pump_session

        where session.saddr = pump_session.saddr;

         로 조회 하시면 현재 Data Pump 를 통해 수행 중인 모든 Session 들과 상태들을

         모니터링 할 수 있습니다.

          Data Pump  의  모니터링

         SELECT opname,target_desc,sofar,totalwork,(sofar/totalwork*100) Percentage

         FROM v$session_longops;

         opname  : JOBNAME 과 같습니다.

         TOTALWORK : 총 수행하여야할 용량을 가르키며 단위는 Megabytes 입니다.

         sofar     : 현재 수행한 용량 을 가르키며 단위는  Megabytes 입니다.

         target_desc : 작업의 종류를 말합니다. IMPORT/EXPORT 가 값이 될수 있습니다.

반응형
Posted by [PineTree]
ORACLE/Migration2008. 11. 7. 15:01
반응형


  

 5. Data Pump Export 사용하기

   이제 본격적으로 Data Pump Export 를 사용하는 방법과, 여러 가지 옵션들에 대해 살펴

   보고, 실 상황에서 옵션들이 어덯게 동작하는지 테스트 해보는 시간을 가져 보도록 하겠습

   니다.

     1) 컴맨드 라인을 이용한 Data Pump 사용

     $ expdp system/manager DIRECTORY=datapump_dir1 DUMPFILE=dangntong_dump01.dmp

     컴맨드 라인을 이용하여 보기와 같이 expdp 를 사용하실 수 있습니다. 커맨들 라인을

     이용 할 때는 비교적 적은 수의 옵션들이 사용되거나 간단한 구문일 때 이용하시는 것이

     좋습니다. 복잡하고, 옵션이 많게 되면 수정 하거나, 잘못 타이핑할 때 시간이 많이

     걸리게 됩니다.

     2) 파라메타 파일을 이용한 Data Pump 사용

     파라메타 파일에 다음과 같이 기록합니다. 파일명은 dangtong.par입니다.

     ⓛ dangtong.par 파일을 다음과 같이 작성하세요

     SCHEMAS=SCOTT

     DIRECTORY=datapump_dir1

     DUMPFILE=dangtong_dump01.dmp

 LOGFILE=dangtong_dump.log  

     $ expdp dangtong/imsi00 PARFILE=dangtong.par

 

   6. Data Pump Export 모드

    1) Full export 모드

    FULL 파라메타를 사용합니다.

    데이터 베이스 전체를 export 받을수 있습니다. 한가지 주의 할점은

    EXPORT_FULL_DATABASE 롤이 Full export 받고자 하는 사용자 에게 부여되어 있

    어야 합니다.

    2) 스키마 모드

    SCHEMAS 파라메타를 사용합니다.

    하나의 유저가 소유하고 있는 데이타및 오브젝트 전체를 export 받고자 할때  사용할 수

    있는 모드입니다.

    3) 테이블스페이스 모드

    TABLESPACE 파라메타를 사용합니다.

    하나 이상의 테이블스페이스에 대해 해당 테이블스페이스에 속한 모든 테이블을 받을수

    있습니다. 만약 TRANSPORT_TABLESPACES 파라메타를 이용한다면, 테이블 뿐 아니라 테이

    블스페이스의 메타데이타 까지 export 받게 되어 다른 서버에 dump 파일을 카피 한 후

    import 하게 되면 테이블 스페이스 및 테이블이 자동으로 생성됩니다.

    4) 테이블 모드

    TABLES 파라메타를 사용합니다.

    하나 이상의 테이블을 export 받을 때 사용합니다.

 

   7. Data Pump Export 파라메타

    1) 파일 및 디렉토리 관련 파라메타

       파라메타 :DIRECTORY,DUMPFILE,FILESIZE,PARFILE,LOGFILE,NOLOGFILE,COMPRESSION

       ① DIRECTORY : 디렉토리 오브젝트를 참조 하는 DIRECTORY 파라메타를 이용하여

          덤프 파일의 위치 및 로그 파일의 위치를 지정할 수 있습니다.

          DIRECTORY=directory_object_name  형식으로 사용할 수 있습니다.

       ② DUMPFILE  : Export 받아 파일시스템에 저장될 덤프파일의 이름을 지정하는 파

          라메터 입니다. 파라메타를 사용할 때 다음을 기억하시고 사용하시면 됩니다.

          - %U 를 사용하여 여러 개의 덤프 파일을 구분할 수 있습니다.

            DUMPFILE=DANGTONG_DUMO_%U.dmp 로 파라메타를 정의 합니다. 만약 덤프 파일

            이 10개가 생성 된다고 가정하면 DANGTONG_DUMO_01.dmp 부터 DANGTONG_DUMO_10.dmp

            까지 %U 부분이 자동 증가하여 파일을 구분하여 줍니다. %U의 범위는 01~99 까

            지입니다.

          - ',' 를 이용하여 여러게의 파일명을 구분할 수 있습니다. 예를 들어 다음과 같이

            DUMPFILE=DANGTONG_DUMO_01.dmp,DANGTONG_DUMO_02.dmp,DANGTONG_DUMO_03.dmp 라고

            정의 할 수 있습니다.

          - 만약 DUMPFILE 파라메타를 지정하지 않는다면 expdat.dmp 라는 파일명으로 오

            라클이 자동 선언하게 됩니다.

       ③ FILESIZE  : Export 받는 1개 파일의 최대 크기를 지정하는 파라메타 입니다.

          만약 총데이터 량이 10Gigabyte 이고 FILESIZE 를 1Gigabyte 로 지정하였다면

          1Gigabyte 크기의 dump file 이 10개 만들어 지게 됩니다.

          FILESIZE=N [ BYTES | KILOBYTES | MEGABYTES | GIGABYTES ] 형식으로 쓸 수 있습

    니다.

 ④ PARFILE   : 파일에 파라메타 들을 저장해두고 Data Pump 를 이용할 때 마다 참조

    하여 작업을 수행하고 싶을 때 PARFILE 파라메타 를  사용할 수 있습니다.

    PARFILE=filename.par 형식으로 사용할 수 있으며, 파일 확장자는 아무런 영향을

    미치지 않습니다.

 ⑤ LOGFILE and NOLOGFILE : 로그파일명을 지정하는 파라메타 입니다.

    LOGFILE=logfile_name 형식으로 사용 하시면 됩니다. 파라메타 를 설정하지 않

    는다면 export.log 라는 파일명으로 로그가 남게 됩니다. 로그파일을 남기고 싶

    지 않을 때는 NOLOGFILE 파라메타 를 사용하시면 됩니다.

 ⑥ COMPRESSION : 오라클에서 EXPORT 시에 메타데이터는 압축을 하여 파일에 저장

    하게 됩니다. COMPRESSION 파라메타를 사용 하지 않을 경우에는 덤프파일 내에

    메타데이타가 압축되어 보관됩니다. COMPRESSION 파라메타 에는 METADATA_ONLY,    

 NONE 두개의 옵션이 있으며,METADATA_ONLY 는 파라메타를 사용하지 않으면 디펄

 트로 인식되는 옵션입니다. COMPRESSION=OPTION_NAME 형식으로 사용하시면 됩니다.

 

$expdp dangtong/imsi00 DIRECTORY=datapump_dir1 DUMPFILE=dump.dmp COMPRESSION=NONE

 

    2) Export 모드 관련 파라메타

      파라메타 :FULL,SCHEMAS,TABLES,TABLESPACES,TRANSPORT_TABLESPACES

     TRANSPORT_FULL_CHECK 가 있으며, TRANSPORT_FULL_CHECK 파라메타를 제외한 파라메타

     들은 여러분들 께서 이미 "6. Data Pump Export 모드" 에서 학습 하셨습니다. 그럼

     TRANSPORT_FULL_CHECK 파라메타에 대해서만 학습 하도록 하겠습니다.

     TRANSPORT_FULL_CHECK 파라메타는 Export 작업시에 테이블스페이스 내에 존재하는 테

     이블과 인덱스의 의존성을 검사 할 것인지 하지 않을 것인지를 설정하는 파라메타 이

     며 'Y' 또는 'N' 두개의 값만을 허용 하는 파라메타 입니다. TRANSPORT_FULL_CHECK

     파라메타는 TRANSPORT_TABLESPACES 와 같이 사용 되어 집니다.

     ① 'Y' 일경우 TABLESPACE 내에 테이블만 있고 인덱스가 없다면 작업은 실패합니다.

        반드시 INDEX도 같은테이블 스페이스에 존재 해야합니다.

     ② 'Y' 일경우 TABLESPACE 내에 인덱스만 존재하고 테이블이 없다면 작업은 실패합니다.

        반드시 TABLE 또한 존재 해야합니다.

     ③ 'N' 일경우 TABLESPACE 내에 테이블만 있고 인덱스가 없다면 작업은 성공합니다.

     ④ 'N' 일경우 TABLESPACE 내에 인덱스만 있고 테이블이 없다면 작업은 실패합니다.

   

    3) Export 필터링 관련 파라메타

     파라메타 :CONTENT,EXCLUDE,EXCLUDE,QUERY 파라메타가 있으며, 이러한 파라메타들은

     어떤 데이터를 Export 된 파일에 포함시킬지 결정 하는 파라메타 입니다.

     ① CONTENT :3개의 옵션을 가질 수 있으면 옵션 들은 다음과 같습니다.

        - ALL : 테이블과 메터데이터를 포함한 모든것을 포함시키겠다는 옵션

       

 

$ expdp dangtong/edu2006 DUMPFILE=datadump.dmp CONTENT=ALL

        - DATA_ONLY : 테이블 데이터만 포함 시키겠다는 옵션

       

 

$ expdp dangtong/edu2006 DUMPFILE=datadump.dmp CONTENT=DATA_ONLY

        - METADATA_ONLY : 메타데이터 만을 포함하겠다는 옵션이며, 이경우 Export된

          파일을 이용해 다른 데이터베이스에 Import할 경우 테이블 구조만 생성되게

          됩니다.

        $ expdp dangtong/edu2006 DUMPFILE=datadump.dmp CONTENT=METADATA_ONLY

     ② EXCLUDE and INCLUDE  : 원하는 오브젝트를 선택하여 받을 수 있습니다.

        그렇다면 EXCLUDE 와 INCLUDE 파라메타가 가질 수 있는 오브젝트의 종류에는 어떤

        것들이 있을까요? 오라클에서 오브젝트란 유저스키마, 테이블, 인덱스, 프로시져

        등을 통칭해서 오브젝트라고 합니다. 파라메타의 사용방법은 아래와 같습니다.

        - SCOTT 유저와 관련된 모든것을 Export 받고 싶은데 단, BONUS 테이블을 제외하고

        받고 싶다면 아래와 같이 하시면 됩니다.

       

 

$ expdp dangtong/edu2006 dumpfile=ex_dump.dmp schemas=scott

  exclude=TABLES:"='BONUS'"  

        - SCOTT 유저와 관련된 모든 것을 Export 받고 싶은데 단, EMP 테이블의 인덱스는 받

          지 않고 싶다면  다음과 같이 하시면 됩니다.

       

 

$ expdp dangtong/edu2006 dumpfile=ex_dump.dmp schemas=scott

  exclude=INDEX:\"='EMP%'\"  

 

        [exclude | include]=object_name:조건 형식으로 사용하실 수 있습니다.

 

     ③ QUERY : 테이블 내에 있는 데이터 중 특정 조건에 만족하는 데이터 만을 Export 받

        고자 할때 사용 하는 파라메타 입니다. 사용방법은 다음과 같습니다.

        QUERY=SCHEMA.TABLE: "조건" 이며 다음과 같은 예들을 볼 수 있습니다.

        - QUERY=SCOTT.EMP: "where SAL > 1200 '

        SCOTT유저의 EMP 테이블을 Export 하되 SAL 컬럼의 값이 1200 보다 큰 값들만 Export

        한다는 뜻입니다.

     ④ SAMPLE : 오라클 10g 에서 새롭게 지원하는 기능중 하나로써 테이블의 데이터를

        Export 할때 퍼센트를 정하여 지정된 퍼센트 만큼의 데이터를 샘플링 해서 뽑을

        때 사용 하는 옵션입니다. 사용방법은 아래와 같습니다.

        

 

$ expdp dangtong/edu2020 DIRECTORY=datapump_dir1 DUMPFILE=datapump.dmp

  SAMPLE=scott.emp:20

     

          SCOTT 유저의 EMP 테이블의 데이터 중 20%만을 Export 하게 됩니다.

        - 입력 가능한 PERCENT 의 범위는 0.000001 ~ 100 까지 입니다.

 

    4) 네트웍링크 파라메타

    원격지 데이터 베이스에 있는 데이터에 접근하여 로컬 데이터베이스 머신에 Export

    된 덤프 파일을 저장하고자 한다면 NETWORK_LINK 파라메타를 사용함으로써 가능합니다.

    원격지 데이터는 DB_LINK를 통해 가져올 수 있으며 NETWORK_LINK 파라메타 를 사용하기

    위해서는 원격지 데이터베이스의 테이블에 대한 DB_LIBK 를 만들어 놓아야 합니다.

    A 데이터베이스에 B 테이터베이스의 EMP 테이블을 소유한 SCOTT_B 유저에 대한

    DB LINK link_b_scott_b 이 존재 한다면 다음과 같이 NETWORK_LINK 파라메타를 사용

    하여 export 할 수 있습니다.

    

 

$ expdp dangtong/edu2006 DIRECTORY=datapump_dir1 dumpfile=datapump.dmp

  NETWORK_LINK=EMP@link_b_scott LOGFILE=datapump.log

    5) 암호화 관련 파라메타

    Export 되는 데이터중 일부 컬럼이 암호화 되어 있거나, 중요한 데이터 라면

    ENCRYPTION_PASSWORD 파라메타를 이용하여 Export 시에 암호를 설정 하여 Export

    된 데이터가 위 변조 되지 못하게 설정할 수 있습니다. 사용 방법은 아래와 같습니다.

    

 

$expdp dangtong/edu2006 TABLES=EMP DUMPFILE=datapump.dmp

 ENCRYPTION_PASSWORD=abcdef

    

    위와 같이 설정 하게 되면 차후 Import 시에 패스워드를 물어 보게 됩니다.

     

    6) JOB 관련 파라메타

    JOB 관련 파라메타 에는 JOB,STATUS 가 있습니다.

     JOB : JOB 파라메타를 설정하면 Data Pump 의 작업 명을 오라클에서 자동할당 하지

       않고 JOB 파라메타에 주어진 이름으로 등록 하게 되게 됩니다. 작업 마스터 테이블에

       작업명이 등록괴어 작업에 대한 정보들을 JOB 파라메타에 등록된 이름으로 조회할 수

       있습니다.

     STATUS :STATUS 파라메타는 Data Pump Export 작업시에 작업의 갱신된 내용을 STATUS

       에 설정된 크기의 시간 간격으로 진행상태를 보고 받고자 할때 사용하는 파라메타 입

       니다. STATUS=30 이면 30초 간격으로 작업결과를 갱신하여 보여 주게 됩니다. 만약 이

       파라메타를 설정하지 않으면 디펄트는 0입니다. 디펄트로 설정하게 되면 거의 실시간

       으로 작업 정보를 보여 주게 됩니다.

     FLASHBACK_SCN :System Change Number(SCN)는 시스템의 테이블이나 오브젝트가 변경

    되었을 때  변경 되는 SCN값을 가집니다. FLASHBACK_SCN 파라메타를 이용하여 SCN 값을

    지정할 경우에 파라메타에 설정된 SCN  기준 이전까지의 상태를 받게 됩니다.

    

 

$expdp dangtong/edu2006 dircetory=datapump_dir1 dumpfile=datapump.dmp

 FLASHBACK_SCN=120001

 

     FLASHBACK_TIME : FLASHBACK_TIME은 번호 대신에 시간 값을 가집니다. FLASH_BACK

    파라메타를 사용하면 파라메타에 지정된 시간까지 의 변경사항만을 Export 하게 됩니다.

    FLASHBACK_TIME 의 값은 TIMESTAMP 형식의 값을 가지며 TO_TIMESTAMP 함수를 사용하여

    설정할 수 있습니다.

     PARALLEL : PARALLEL 파라메타를 사용할 경우 Export 작업시에 프로세스를 필요한

    숫자 만큼 만들어 수행 함으로써 작업의 속도를 향상 시킬 수 있습니다. 디펄트 값은

    1로 설정되어 있으며, 주의할 점은 PARALLEL 에 지정된 갯수 만큼의 dumpfile 을 지정

    해주어야 합니다. 앞서 배운 %U 를 사용 하면 지정된 PARALLEL 갯수 만큼 자동으로 파일

    을 만들게 됩니다.

    

 

$expdp dangtong/edu2006 direcotry=datapump_dir1 dumpfile=datapump%U.dmp

 PARALLEL=3

    위와 같이 설정하게 되면 datapump01.dmp, datapump02.dmp, datapump03.dmp 3개의 덤프

    파일이 생성 됩니다.

    

 

$expdp dangtong/edu2006 direcotry=datapump_dir1 dumpfile=(datapump1.dmp,

 datapump2.dmp, datapump3.dmp) PARALLEL=3

 

    위와 같이 %U를 사용하지 않고 사용자가 직접 3개의 파일명을 ',' 로 구분하여 입력해도

    무방 합니다.

     ATTACH : ATTACH 파라메타 를 이용하여 Interactive Mode 로 들어 갈수 있습니다.

     오라클에서는 작업을 제어하고 모니터링 하기 위해 Interactive Mode 를 제공합니다.

     Interactive mode 로 들어가는 방법은 2가지가 있으며 다음과 같습니다.

      - Crtl + C 를 입력 함으로써 들어 갈 수 있습니다.

        $expdp dangtong/edu2006 directory=datapump_dir1                

         table=scott.emp dumpfile=datapump.dmp

         LOGFILE=datapump.log JOBNAME=MYJOB

        작업로그.........

        ................. -> 작업에 대한 로그가 떨어질때 Crtl + C 를 누르게 되면

        export> _         -> 와 같이 프롬프트 상태로 진입하게 됩니다.

        로그가 멈춘다고 해서 작업이 중단 된게 아니라 여러분 께서는 이상태에서 Inter

         active mode 명령을 사용하여 작업을 모티너링 하고 작업을 제어 할수 있습니다.

 

      - $expdp username/password ATTACH=SCHEMA.JOB_NAME 형식 으로 원하는 작업의 

        Interactive mode 로 들어 갈수 있습니다.

        

 

 $expdb dangtong/edu2006 ATTACH=scott.MYJOB

        하게 되면 조금 전에 실행한 작업의 Interactive mode 로 들어 가게 됩니다.

        이처럼 ATTACH 파라메타는 현재 수행 중신 작업의 Interactive mode 로 진입 하는데

        사용 되어 지며 InterActive Mode 명령에는 다음과 같은 것들이 있습니다.

        

명령어

설명

ADD_FILE

 덤프파일 을 추가 할 때 사용합니다.

CONTINUE_CLIENT

 Interactive Mode 에서 Logging Mode 로 전환 할 때 사용합니다.

EXIT_CLIENT

 Client Session 을 종료하고 Job 의 상태에서 벗어납니다.

HELP

 Interactive mode 도움말페이지

KILL_JOB

 작업을 삭제합니다.

PARALLEL

 현재 수행중인 작업의 프로세스 개수를 조정할때 사용합니다.

START_JOB

 실패한 작업이나 중단된 작업을 다시 시작시킬 때 사용합니다.

STATUS

 현재 작업상태를 모니터링 할 때의 갱신 시간을 설정합니다.

STOP_JOB

 작업의 실행을 중단하고 Client 를 종료합니다.

반응형
Posted by [PineTree]
ORACLE/Migration2008. 11. 7. 14:59
반응형

Dangtong 의 오라클 <Data Pump Export / Import 1편>

 

우리가 데이터 베이스 내에 있는 정보들을 운영체제 파일 시스템으로 옮기거나 혹은 그 반대

의 경우를 위해 사용해 오던 것이  export/import 였다면 ,오라클 Data Pump 는 우리가 사용

 오던 export/import 의 기능에 다양하고 강력한 기능들을 추가 한 것입니다.  

오라클 10g 에서는 export/import와 Data Pump export/import 두 가지 기능을 모두를 지원

하고 있지만, Data Pump import/export 를 알고난 후 에는 더 이상 기존에

사용해오던 export/import 를 사용하실 필요성을 느끼지 못하게 되실 겁니다.  왜냐구요?

그만큼 강력한 기능을 제공한답니다.  자 그럼 Data Pump 의 세계로 들어가 볼까요?

※잠깐만~~!!

Export/Import와 Data pump는 서로 호환되지 않습니다. 즉 Export유틸리티를 이용하여 백업 받은 파일을 Data pump 를 이용하여 Import할 수 없으며, 마찬가지로 Data Pump 를 통해 Export 된 데이터는 Export/Import 유틸리티를 통해 Import할 수 없습니다.

 

1. Data Pump export/import 의 잇점

   Data Pump export/import 를 사용함으로서 얻을 수 있는 잇점은 다음과 같습니다.  

    1) JOB 콘트롤 가능

    Interactive mode 를 통하여 Data Pump 작업을 통제 할 수 있습니다. 작업을 중단시키고

    재시작 할 수 있으며 동적으로 dump file 을 할당 할 수 있습니다. 에러가 나더라도 작업

    이 중지 될 뿐 언제든지 원인을 수정하고 재수행 할 수 있습니다.

    2) 병렬수행지원

    PARALLEL 파라메타 를 이용하여 프로세스의 Data Pump 작업의 프로세스를 병렬화 할수

    있습니다. 병렬화 된 프로세스는 여러게의 데이타 파일에 각각 데이터를 쓰거나 여러

    개의 데이터 파일로 부터 데이터를 읽어 데이터베이스에 저장합니다. 병렬 수행이 가능

    함으로써 이전 보다 훨씬 강력한 수행 속도를 보장합니다.

    3) 작업에 필요한 디스크공간을 미리 예상

    ESTIMATE 파라메타를 이용하여 작업 시작 전에 필요한 물리적인 디스크 공간을 예상 할

    수 있습니다.

    4) 원격지 수행

    DB LINK를 통하여 원격지 데이터에 대한 Data Pump Import/Export 를 수행 할 수 있습

    니다.

    5) Remapping 지원

    유저 스키마, 테이블 스페이스, 데이터파일 등과 같은 정보들의 Data Pump Import/

    Export 시에 변경 할 수 있습니다. 이러한 기능은 데이터 마이그레이션 시에 보다 많

    은 유연성을 제공하는데 큰 역할을 합니다.

2. Data Access Methods

    1) Direct-path

    메모리를 거의 사용하지 않고 파일에 direct 로 쓰게 되는 방법입니다. 메모리

    사용이 적고 속도가 빠르며, 데이터 컨버전에 시간이 걸리지 않습니다.

    2) External tables

    메타 데이터를 데이터베이스에 저장하고 데이터 는 파일시스템에 존재하게 함으로써

    대용량 데이터를 Export/Import 할 때 사용합니다.

    이두가지 모드는 오라클이 자동으로 판단하여 수행하게 됩니다.

※잠깐만~~!!!

Direct-path 가 되지 않는 경우

. 클러스터 테이블인 경우

. 테이블에 활성화된 트리거가 존재 할 경우

. 글로벌 인덱스를 가진 테이블이 하나의 파티션에 존재 할 경우

. LOB 칼럼 에 있는 도메인 인덱스

. insert 모드에서 fine-grained access control 이 enable 인 경우

. BFILE 을 가진 테이블 인 경우

 

External Table이란?

. Create TABLE ~~ ORGANIZATION EXTERNAL 문을 통해 만들어진 테이블입니다.

. 실질적인 데이터는 데이터 베이스 내에 존재하는 것이 아니라 물리적 디스크에 논리

  적 공간을 할당 받아 데이터를 저장하며, 파일형태로 존재합니다.

. 저장되는 데이터는 READ ONLY 데이터 이며 인덱스를 생성할 수 없습니다.

. DML 작업을 수행할 수 없습니다.

. MEAT-DATA in DATABASE, DATA in OS 라고 압축 설명 할 수 있습니다.

 

3. Data Pump의 권한 설정

    좀더 다양한 옵션과 Data Pump 의 모든 기능을 자유자재로 사용하고

    자 한다면, 시스템에 설정된 EXP_FULL_DATABASE, IMP_FULL_DATABASE 롤을 부여 함으로써

    가능합니다. 일단 다음과 같이 유저를 생성하고 두 권한 모두를 생성된 사용자에 게 주는

    실습을 해 보도록 합시다.

    1) 사용자 생성

       create user dangtong identified by imsi00

       default tablespace USERS

       temporary tablespace temp;

    2) 권한부여

       grant connect, resource to dangtong;

    3) 모든 테이블에 대한 select 권한 부여

       grant select any table to dangtong;

    4) EXP_FULL_DATABASE,IMP_FULL_DATABASE 권한 부여

       grant EXP_FULL_DATABASE, IMP_FULL_DATABASE to ecampus;

       

    이렇게 함으로써 모든 데이터 베이스 오브젝트에 대한 Data Pump 권한을 획득

    하였습니다. 그럼 이제 실제적으로 Data Pump 를 이용하여 Export/Import 를 실습해 보실

    모든 준비가 되었습니다.   

 

    4. Data Pump 파일 오브젝트

    1) Data Pump 가 사용하는 파일의 종류

       ⓛ Dump File : 테이블로부터 데이터 또는 메타 데이터를 로드하여 저장된 파일

       ② Log File  : Data Pump 작업 중에 발생 하는 메세지나 결과를 기록하는 파일

       ③ SQL File  : Data Pump 는SQLFILE 이라는 옵션을 사용합니다. 이옵션을 사용할 경

                       우 Data Pump Import 작업이 수행되는 동안 DDL 문을 수행할 수 있게

     해주는 옵션입니다.(자세한 사항은 이후에 다룸)

 

    2) Data Pump 디렉토리 오브젝트

      

 

       Data Pump 는 디렉토리 오브젝트를 참조하여 Dump 파일을 쓰게 됩니다.

       그림과 같이 사용자 A는 DO1,DO2 에 허가(GRANT)되어 실재 존재하는 Dir1 과

       Dir2를 사용할 수 있게 됩니다. Data Pump 가 Export 받은 데이터를 Dir1, Dir2 모두

       에 저장할 수 있다. 반면, 사용자 B는 DO1에 만 (Grant) 되어 Dir1 에만 접근할 수 있

       습니다. 이처럼 Data Pump를 이용하게 되면 디렉토리에 대한 권한까지 설정할 수 있

  습니다.

  

       ⓛ 사용 중인 디렉토리 오브젝트의 조회

          SELECT * FROM dba_directories;   

       ② 디렉토리 오브젝트 추가

          CREATE DIRECTORY datapump_dir1 as '/temporary/ora_tmp';  

          '/temporary/ora_tmp' 에 대한 디렉토리 오브젝트 datapump_dir1 을 생성하는

          명령문 입니다.

       ③ 디렉토리 오브젝트에 대한 권한 설정

          GRANT READ,WRITE ON DIRECTORY datapump_dir1 to dangtong;

          ecampus 유저에 대해 datapump_dir1 에 대한 쓰기 및 읽기 권한을 할당하는 명령문 입니다.

          이제 Data pump 를 통해 Export 받을 때 ecampus 유저는 다음과 같이 지정함으로서 '/temporary/ora_tmp'

          에 Export된 덤프 파일을 저장할 수 있습니다.

 expdp dangtong/imsi00 DIRECTORY=datapump_dir1 Tables=EMP dumpfile=dangtong_dump1.dmp

         

       ④ 디펄트 디렉토리 설정하기

          Data Pump 를 사용할 때마다 디렉토리지정을 하지 않고 묵시적으로 사용하고 싶다

          면 운영체제 환경변수에 DATA_DUMP_DIR 을 만들고 그 값으로 디렉토리 오브젝트명

          을 입력 하면 됩니다.

          $ export DATA_DUMP_DIR datapump_dir1

          위와 같이 선언하게 되면 이제 다음과 같이 디렉토리를 지정하지 않아도 됩니다.

          $ expdp ecampus/password  dumpfile=ecam_dump01.dmp Tables= test_00

반응형
Posted by [PineTree]