oracle을 사용하면서 데이터베이스 내의 데이터를 다른 데이터베이스로 옮기거나, backup을 위해서 export tool을 사용하는데 일반적으로 table의 전체 데이터를 backup 받거나 user의 데이터, 또는 전체 데이터를 backup 받곤 합니다.
export에는 많은 option들이 있는데, 이 중 특정 table의 일부데이터만을 backup 받는 option이 query option 입니다.
[export options]
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
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
query option은 export 수행시 query에서 사용되는 where 절을 지정함으로써 원하는 데이터만을 export 하게 됩니다. 다른 option 들과 마찬가지로 query option을 지정하는 방법은 parameter file을 이용하는 방법과 command line에서 지정하는 방법이 있습니다.
1. QUERY in Parameter file.
parameter file을 이용하는 방법은 당연히 parameter file을 만들어야 합니다. 아래의 예는 scott.emp와 hr.departments table에서 필요한 정보만을 export data pump로 backup하는 방법입니다.
File: expdp_q.par
-----------------
DIRECTORY = my_dir
DUMPFILE = exp_query.dmp
LOGFILE = exp_query.log
SCHEMAS = hr, scott
INCLUDE = TABLE:"IN ('EMP', 'DEPARTMENTS')"
QUERY = scott.emp:"WHERE job = 'ANALYST' OR sal >= 3000"
# place following 3 lines on one single line:
QUERY = hr.departments:"WHERE department_id IN (SELECT DISTINCT
department_id FROM hr.employees e, hr.jobs j WHERE e.job_id=j.job_id
AND UPPER(j.job_title) = 'ANALYST' OR e.salary >= 3000)"
parameter file을 다 만들었으면 export 수행시 해당 parameter file을 지정해 수행합니다.
%expdp system/manager parfile=expdp_q.par
parameter file을 이용하는 방법은 당연히 parameter file을 만들어야 합니다. 아래의 예는 scott.emp와 hr.departments table에서 필요한 정보만을 export data pump로 backup하는 방법입니다.
File: expdp_q.par
-----------------
DIRECTORY = my_dir
DUMPFILE = exp_query.dmp
LOGFILE = exp_query.log
SCHEMAS = hr, scott
INCLUDE = TABLE:"IN ('EMP', 'DEPARTMENTS')"
QUERY = scott.emp:"WHERE job = 'ANALYST' OR sal >= 3000"
# place following 3 lines on one single line:
QUERY = hr.departments:"WHERE department_id IN (SELECT DISTINCT
department_id FROM hr.employees e, hr.jobs j WHERE e.job_id=j.job_id
AND UPPER(j.job_title) = 'ANALYST' OR e.salary >= 3000)"
parameter file을 다 만들었으면 export 수행시 해당 parameter file을 지정해 수행합니다.
%expdp system/manager parfile=expdp_q.par
2. QUERY on Command line.
말 그대로 command line에서 모든 명령문을 써 주는 방법입니다. 주의 하실 것은 unix shell 상태에서 특수 문자를 사용해야 하므로 특수문자 앞에 escape 문자인 \를 지정해야 합니다.
다음의 예는 scott.dept 전체 데이터와 scott.emp의 일부 데이터를 backup 받는 방법입니다.
% expdp scott/tiger DIRECTORY=my_dir \
DUMPFILE=expdp_q.dmp LOGFILE=expdp_q.log TABLES=emp,dept \
QUERY=emp:\"WHERE ename LIKE \'A\%\'\"
말 그대로 command line에서 모든 명령문을 써 주는 방법입니다. 주의 하실 것은 unix shell 상태에서 특수 문자를 사용해야 하므로 특수문자 앞에 escape 문자인 \를 지정해야 합니다.
다음의 예는 scott.dept 전체 데이터와 scott.emp의 일부 데이터를 backup 받는 방법입니다.
% expdp scott/tiger DIRECTORY=my_dir \
DUMPFILE=expdp_q.dmp LOGFILE=expdp_q.log TABLES=emp,dept \
QUERY=emp:\"WHERE ename LIKE \'A\%\'\"
참조 : Note 277010.1 Export/Import DataPump Parameter QUERY - How to Specify a Query
'Oracle Database' 카테고리의 다른 글
Oracle EXISTS Versus IN (1) | 2009.10.06 |
---|---|
Oracle sqlplus에서 변수 사용하기. (1) | 2009.10.06 |
Oracle DESC index에 대한 colunm 이름 찾는 방법 (0) | 2009.09.25 |
Oracle AWR 자료 query 할때 편한 함수 LAG (2) | 2009.09.03 |
oracle TimesTen 11g Conference (0) | 2009.09.03 |