행위

"Oracle 데이터펌프"의 두 판 사이의 차이

DB CAFE

 
(사용자 3명의 중간 판 128개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Oracle Data Pump (expdp, impdp) in Oracle Database 10g, 11g, 12c, 18c
+
{{틀:고지상자
(원본 https://oracle-base.com/articles/10g/oracle-data-pump-10g)
+
|제목=* 데이터 펌프(DATAPUMP) 사용 절차
 +
|내용=1) '''사용자 생성'''
 +
<source  lang=sql>
 +
SQL> create user new_scott identified by tiger;
 +
</source>
  
Oracle Data Pump는 이전 오라클 버전에서 사용 된 "exp"및 "imp"유틸리티보다 더 새롭고 빠르고 유연한 대안입니다.
 
기본 가져 오기 및 내보내기 기능 외에도 데이터 펌프는 PL / SQL API를 제공하고 외부 테이블을 지원합니다.
 
  
이 기사는 원래 Oracle 10g에 대해 작성되었지만 최신 버전의 Oracle과 관련이 있습니다.
+
2) '''권한 추가'''
새로운 기능은 별도의 기사로 나뉘지만 하단의 도움말 섹션은 최신 버전으로 업데이트되었습니다.
+
<source  lang=sql>
 +
SQL> grant connect, resource to new_scott;
 +
</source>
  
Getting Started
 
Table Exports/Imports
 
Schema Exports/Imports
 
Database Exports/Imports
 
INCLUDE and EXCLUDE
 
CONTENT and QUERY
 
Network Exports/Imports (NETWORK_LINK)
 
Flashback Exports
 
Miscellaneous Information
 
Data Pump API
 
External Tables (Unloading/Loading Data Using External Tables)
 
Secure External Password Store
 
Help
 
  expdp
 
  impdp
 
  
 +
3) '''디렉토리 권한 추가'''
 +
<source  lang=sql>
 +
SQL> grant read, write on directory MY_DMP_DIR to new_scott;
 +
Grant succeeded.
 +
</source>
  
Data Pump Enhancements in Oracle Database 11g Release 1 (expdp and impdp)
 
Data Pump Enhancements in Oracle Database 12c Release 1 (expdp and impdp)
 
Data Pump Enhancements in Oracle Database 12c Release 2 (expdp and impdp)
 
SQL Developer 3.1 Data Pump Wizards (expdp, impdp)
 
Transportable Tablespaces
 
Oracle Cloud : Autonomous Data Warehouse (ADW) - Import Data from an Object Store (impdp)
 
 
시작하기
 
 
예제가 작동하려면 먼저 SCOTT 계정의 잠금을 해제하고 액세스 할 수있는 디렉토리 객체를 만들어야합니다. 디렉토리 객체는 실제 디렉토리에 대한 포인터 일 뿐이며 실제로는 데이터베이스 서버의 파일 시스템에 실제 디렉토리를 만들지 않습니다.
 
 
<source lang='sql'>
 
CONN / AS SYSDBA
 
ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
 
  
CREATE OR REPLACE DIRECTORY test_dir AS '/u01/app/oracle/oradata/';
+
4) '''디비링크 생성권한'''(DBLINK 이용시)
GRANT READ, WRITE ON DIRECTORY test_dir TO scott;
+
<source  lang=sql>
 +
SQL> grant create database link to new_scott;
 +
SQL> connect new_scott/tiger
 +
SQL> create database link OLD_DB connect to scott identified by tiger  using 'olddb.krenger.ch';
 
</source>
 
</source>
ALL_DIRECTORIES보기를 사용하여 기존 디렉토리를 조회 할 수 있습니다 .
 
  
Data Pump는 서버 기반 기술이므로 일반적으로 데이터베이스 서버의 물리적 디렉토리를 가리키는 디렉토리 객체를 처리합니다. 클라이언트 PC의 로컬 파일 시스템에 쓰지 않습니다.
+
5) '''디비링크 생성후 impdp  수행'''
 
+
* 스키마를 변경(scott-> new_scott) 하여 import
Table Exports/Imports
+
<source lang=sql>
TABLES매개 변수는 내보낼 수있는 테이블을 지정하는 데 사용됩니다. 다음은 테이블 내보내기 및 가져 오기 구문의 예입니다.
+
impdp new_scott/tiger directory=MY_DMP_DIR LOGFILE=dblink_transfer.log network_link=OLD_DB remap_schema=scott:new_scott
<source lang='sql'>
 
expdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log
 
 
 
impdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log
 
 
</source>
 
</source>
예를 들어 출력 파일은 expdpEMP_DEPT.log 및 impdpEMP_DEPT.log를 참조하십시오 .
+
}}
  
이 TABLE_EXISTS_ACTION=APPEND매개 변수를 사용하면 기존 테이블에 데이터를 가져올 수 있습니다.
 
  
Schema Exports/Imports
+
----
The OWNER parameter of exp has been replaced by the SCHEMAS parameter which is used to specify the schemas to be exported. The following is an example of the schema export and import syntax.
+
{{:IMPORT DP}}
 +
----
  
<source lang='sql'>
+
{{:EXPORT DP}}
expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
 
  
impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log
+
----
</source>
 
  
For example output files see expdpSCOTT.log and impdpSCOTT.log.
+
== 데이터펌프 작업 관리 및 모니터링 ==
 +
{{틀:고지상자
 +
|제목= : 주요사항
 +
|내용=현재 작업중인 datapump 작업들의 내용을 dba_datapump_jobs 딕셔너리를 통해 확인 가능
 +
}}
  
Database Exports/Imports
 
FULL매개 변수는 전체 데이터베이스의 수출이 필요하다는 것을 나타냅니다. 다음은 전체 데이터베이스 내보내기 및 가져 오기 구문의 예입니다.
 
  
<source lang='sql'>
+
<source lang=sql>
expdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log
+
SELECT owner_name, job_name, operation, job_mode, state
 
+
  FROM dba_datapump_jobs;
impdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=impdpDB10G.log
 
For an example output file see expdpDB10G.log.
 
 
</source>
 
</source>
 
+
<source lang=sql>
INCLUDE and EXCLUDE
+
select substr(sql_text,instr(sql_text,'INTO "'),30) table_name,
INCLUDE및 EXCLUDE매개 변수는 특정 개체에 내보내기 / 가져 오기를 제한 할 수 있습니다. INCLUDE매개 변수를 사용 하면 지정된 매개 변수가 내보내기 / 가져 오기에 포함됩니다. EXCLUDE매개 변수를 사용 하면 지정된 매개 변수를 제외한 모든 개체가 내보내기 / 가져 오기에 포함됩니다. 두 매개 변수는 상호 배타적이므로 필요한 결과를 얻기 위해 최소한의 항목이 필요한 매개 변수를 사용하십시오. 두 매개 변수의 기본 구문은 동일합니다.
+
rows_processed,
 
+
round((sysdate-to_date(first_load_time,'yyyy-mm-dd hh24:mi:ss'))*24*60,1) minutes,
 
+
trunc(rows_processed/((sysdate-to_date(first_load_time,'yyyy-mm-dd hh24:mi:ss'))*24*60)) rows_per_min
<source lang='sql'>
+
from sys.v_$sqlarea
INCLUDE=object_type[:name_clause] [, ...]
+
where sql_text like 'INSERT %INTO "%'
EXCLUDE=object_type[:name_clause] [, ...]
+
and command_type = 2
 +
and open_versions > 0;
 
</source>
 
</source>
  
다음 코드는 이들을 명령 행 매개 변수로 사용하는 방법을 보여줍니다.
+
=== Datapump 작업 진행사항 ===
  
<source lang='sql'>
+
<source lang=sql>
expdp scott/tiger@db10g schemas=SCOTT include=TABLE:"IN ('EMP', 'DEPT')" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
+
SELECT X.JOB_NAME
 
+
    , B.STATE
expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:"= 'BONUS'" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
+
    , B.JOB_MODE
 +
    , B.DEGREE
 +
    , X.OWNER_NAME
 +
    , Z.SQL_TEXT
 +
    , P.MESSAGE
 +
    , P.TOTALWORK
 +
    , P.SOFAR
 +
    , ROUND ( (P.SOFAR / P.TOTALWORK) * 100, 2) DONE
 +
    , P.TIME_REMAINING
 +
  FROM DBA_DATAPUMP_JOBS B
 +
  LEFT JOIN DBA_DATAPUMP_SESSIONS X ON (X.JOB_NAME = B.JOB_NAME)
 +
  LEFT JOIN V$SESSION Y ON (Y.SADDR = X.SADDR)
 +
  LEFT JOIN V$SQL Z ON (Y.SQL_ID = Z.SQL_ID)
 +
  LEFT JOIN V$SESSION_LONGOPS P ON (P.SQL_ID = Y.SQL_ID)
 +
-- WHERE Y.MODULE = 'Data Pump Worker' AND P.TIME_REMAINING > 0
 +
;
 
</source>
 
</source>
  
매개 변수가 명령 줄에서 사용되는 경우 OS에 따라 다음과 같이 절의 특수 문자를 이스케이프해야 할 수 있습니다. 이 때문에 매개 변수 파일을 사용하는 것이 더 쉽습니다.
+
== 데이터펌프(DATAPUMP) JOB 중지 ==
 
+
<source lang=sql>
include=TABLE:\"IN (\'EMP\', \'DEPT\')\"
+
SELECT * FROM DBA_DATAPUMP_JOBS;
 
 
단일 가져 오기 / 내보내기에는 매개 변수에 대한 여러 참조가 포함될 수 있으므로 테이블, 뷰 및 일부 패키지를 내보내려면 다음 방법 중 하나를 사용할 수 있습니다.
 
 
 
INCLUDE=TABLE,VIEW,PACKAGE:"LIKE '%API'"
 
  or
 
INCLUDE=TABLE
 
INCLUDE=VIEW
 
INCLUDE=PACKAGE:"LIKE '%API'"
 
 
 
Multiple objects can be targeted in once statement using the LIKE and IN operators.
 
 
 
EXCLUDE=SCHEMA:"LIKE 'SYS%'"
 
 
 
EXCLUDE=SCHEMA:"IN ('OUTLN','SYSTEM','SYSMAN','FLOWS_FILES','APEX_030200','APEX_PUBLIC_USER','ANONYMOUS')"
 
 
 
The valid object type paths that can be included or excluded can be displayed using the DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, and TABLE_EXPORT_OBJECTS views.
 
 
 
CONTENT and QUERY
 
 
 
CONTENT매개 변수는 EXPORT의 내용을 변경할 수 있습니다. 다음 명령은 METADATA_ONLY 매개 변수 값을 사용 하여 데이터없이 스키마 내용을 내 보냅니다.
 
 
 
 
 
expdp system/password@db10g schemas=SCOTT directory=TEST_DIR dumpfile=scott_meta.dmp logfile=expdp.log
 
content=METADATA_ONLY
 
메타 데이터없이 데이터를 캡처하려면 DATA_ONLY매개 변수 값을 사용하십시오 .
 
 
 
expdp system/password@db10g schemas=SCOTT directory=TEST_DIR dumpfile=scott_data.dmp logfile=expdp.log content=DATA_ONLY
 
QUERY매개 변수는 하나 개 이상의 테이블에서 내 보낸 행을 변경할 수 있습니다. 다음 예제는 전체 데이터베이스 내보내기를 수행하지만 EMP 및 DEPT 테이블의 데이터는 포함하지 않습니다.
 
 
 
expdp system/password@db10g full=Y directory=TEST_DIR dumpfile=full.dmp logfile=expdp_full.log query='SCOTT.EMP:"WHERE deptno=0",SCOTT.DEPT:"WHERE deptno=0"'
 
명령 줄에서 따옴표를 처리하는 방법은 달성하려는 대상에 따라 다릅니다. 다음은 명령 줄에서 직접 단일 테이블과 여러 테이블에 대해 작동하는 몇 가지 예제입니다.
 
 
 
# Single Table. Multiple quoting methods possible.
 
expdp scott/tiger@pdb1 schemas=scott directory=TEST_DIR dumpfile=scott1.dmp logfile=scott1.log query=SCOTT.EMP:'"WHERE deptno=10"'
 
expdp scott/tiger@pdb1 schemas=scott directory=TEST_DIR dumpfile=scott2.dmp logfile=scott2.log query=SCOTT.EMP:\"WHERE deptno=10\"
 
expdp scott/tiger@pdb1 schemas=scott directory=TEST_DIR dumpfile=scott3.dmp logfile=scott3.log query='SCOTT.EMP:"WHERE deptno=10"'
 
 
 
# Multiple WHERE clause on each table.
 
expdp scott/tiger@pdb1 schemas=scott directory=TEST_DIR dumpfile=scott4.dmp logfile=scott4.log query='SCOTT.EMP:"WHERE deptno=10",SCOTT.DEPT:"WHERE deptno=20"'
 
 
 
Network Exports/Imports (NETWORK_LINK)
 
이 NETWORK_LINK매개 변수는 네트워크 내보내기 / 가져 오기 소스로 사용될 데이터베이스 링크를 식별합니다. 다음 데이터베이스 링크를 사용하여 그 사용법을 보여줍니다.
 
 
 
CONN / AS SYSDBA
 
GRANT CREATE DATABASE LINK TO test;
 
 
 
CONN test/test
 
CREATE DATABASE LINK remote_scott CONNECT TO scott IDENTIFIED BY tiger USING 'DEV';
 
반출의 경우, NETWORK_LINK매개 변수는 소스 서버를 가리키는 데이터베이스 링크를 식별합니다. 개체는 정상적인 방법으로 원본 서버에서 내보내지만 원본 서버의 개체가 아닌 로컬 서버의 디렉터리 개체에 기록됩니다. 로컬 및 원격 사용자 모두 EXP_FULL_DATABASE에게 부여 된 역할이 필요 합니다.
 
 
 
expdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DIR dumpfile=EMP.dmp
 
logfile=expdpEMP.log
 
가져 오기의 경우 NETWORK_LINK매개 변수는 원본 서버를 가리키는 데이터베이스 링크도 식별합니다.
 
차이점은 개체가 덤프 파일에 기록되지 않고 원본에서 로컬 서버로 직접 가져온 것입니다.
 
DUMPFILE매개 변수 가 필요하지 않지만 조작과 연관된 로그에는 여전히 디렉토리 오브젝트가 필요합니다.
 
로컬 및 원격 사용자 모두 IMP_FULL_DATABASE에게 부여 된 역할이 필요 합니다.
 
 
 
impdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DIR logfile=impdpSCOTT.log
 
remap_schema=SCOTT:TEST
 
 
 
Flashback Exports
 
The exp utility used the CONSISTENT=Y parameter to indicate the export should be consistent to a point in time. By default the expdp utility exports are only consistent on a per table basis. If you want all tables in the export to be consistent to the same point in time, you need to use the FLASHBACK_SCN or FLASHBACK_TIME parameter.
 
 
 
The FLASHBACK_TIME parameter value is converted to the approximate SCN for the specified time.
 
 
 
expdp ..... flashback_time=systimestamp
 
 
 
# In parameter file.
 
flashback_time="to_timestamp('09-05-2011 09:00:00', 'DD-MM-YYYY HH24:MI:SS')"
 
 
 
# Escaped on command line.
 
expdp ..... flashback_time=\"to_timestamp\(\'09-05-2011 09:00:00\', \'DD-MM-YYYY HH24:MI:SS\'\)\"
 
 
 
당연한 일이지만, 내보내기 작업 중 데이터의 읽기 일관성을 유지할 수있는 충분한 UNDO 공간이 있으면 이전 시점 또는 SCN을 지정하여 내보내기를 이전 시점으로 일관되게 만들 수 있습니다.
 
 
 
SCN을 사용하려면 다음 쿼리 중 하나를 사용하여 현재 SCN을 검색 할 수 있습니다.
 
 
 
<source lang='sql'>
 
SELECT current_scn FROM v$database;
 
SELECT DBMS_FLASHBACK.get_system_change_number FROM dual;
 
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;
 
 
</source>
 
</source>
그런 다음 SCN이 FLASHBACK_SCN매개 변수 와 함께 사용됩니다 .
+
=== IMPDP ATTACH=JOB 접속 후 ===
 
+
<source lang=sql>
expdp ..... flashback_scn=5474280
+
$>IMPDP SCOTT/TIGER@DB ATTACH=JOB명
다음 쿼리는 타임 스탬프와 SCN 간의 변환에 유용 할 수 있습니다.
+
KILL_JOB
 
+
STOP_JOB #STOP_JOB = IMMEDIATE 즉시 종료
<source lang='sql'>
 
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;
 
SELECT SCN_TO_TIMESTAMP(5474751) FROM dual;
 
 
</source>
 
</source>
  
In 11.2, the introduction of legacy mode means that you can use the CONSISTENT=Y parameter with the expdp utility if you wish.
+
=== API 이용 정지 ===
 +
* 주의) 즉시 정지 하지 않음
  
 
+
<source lang=sql>
Miscellaneous Information
 
원래의 exp 및 imp 유틸리티와 달리 모든 데이터 펌프 ".dmp"및 ".log"파일은 클라이언트 시스템이 아닌 Oracle 서버에서 작성됩니다.
 
 
 
모든 데이터 펌프 조치는 여러 작업 (DBMS_JOB 작업이 아닌 서버 프로세스)에 의해 수행됩니다. 이러한 작업은 고급 대기열을 사용하는 마스터 제어 프로세스에 의해 제어됩니다. 런타임시, 작업 이름 다음에 명명 된 고급 큐 테이블이 작성되어 마스터 제어 프로세스에 의해 사용됩니다. 데이터 펌프 작업이 완료되면 테이블이 삭제됩니다. 작업 및 고급 큐의 이름은 JOB_NAME매개 변수를 사용하여 지정할 수 있습니다 . 클라이언트 프로세스를 취소해도 관련 데이터 펌프 작업이 중지되지 않습니다. 작업 중에 클라이언트에서 "ctrl + c"를 실행하면 클라이언트 출력이 중지되고 명령 프롬프트가 표시됩니다. 이 프롬프트에서 "status"를 입력하면 현재 작업을 모니터 할 수 있습니다.
 
 
 
 
 
Export> status
 
 
 
Job: SYS_EXPORT_FULL_01
 
  Operation: EXPORT
 
  Mode: FULL
 
  State: EXECUTING
 
  Bytes Processed: 0
 
  Current Parallelism: 1
 
  Job Error Count: 0
 
  Dump File: D:\TEMP\DB10G.DMP
 
    bytes written: 4,096
 
 
 
Worker 1 Status:
 
  State: EXECUTING
 
  Object Schema: SYSMAN
 
  Object Name: MGMT_CONTAINER_CRED_ARRAY
 
  Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
 
  Completed Objects: 261
 
  Total Objects: 261
 
PARALLEL매개 변수 를 사용하여 데이터 펌프 성능을 향상시킬 수 있습니다 . 이 DUMPFILE매개 변수는 여러 덤프 파일을 만들거나 읽을 수 있도록 매개 변수 의 "% U"와일드 카드와 함께 사용해야합니다 . 가져 오는 동안 동일한 와일드 카드를 사용하여 여러 파일을 참조 할 수 있습니다.
 
 
 
 
 
expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR parallel=4 dumpfile=SCOTT_%U.dmp logfile=expdpSCOTT.log
 
 
 
impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR parallel=4 dumpfile=SCOTT_%U.dmp logfile=impdpSCOTT.log
 
 
 
DBA_DATAPUMP_JOBS 뷰는 현재 작업을 모니터링 할 수 있습니다.
 
 
 
system@db10g> select * from dba_datapump_jobs;
 
 
 
OWNER_NAME                    JOB_NAME                      OPERATION
 
------------------------------ ------------------------------ ------------------------------
 
JOB_MODE                      STATE                              DEGREE ATTACHED_SESSIONS
 
------------------------------ ------------------------------ ---------- -----------------
 
SYSTEM                        SYS_EXPORT_FULL_01            EXPORT
 
FULL                          EXECUTING                              1                1
 
Data Pump API
 
 
 
 
데이터 펌프 유틸리티와 함께 ​​Oracle은 PL / SQL API를 제공합니다. 다음은이 API를 사용하여 스키마 내보내기를 수행하는 방법의 예입니다.
 
 
 
<source lang='sql'>
 
SET SERVEROUTPUT ON SIZE 1000000
 
 
DECLARE
 
DECLARE
  l_dp_handle      NUMBER;
+
h1 NUMBER;
  l_last_job_state  VARCHAR2(30) := 'UNDEFINED';
 
  l_job_state      VARCHAR2(30) := 'UNDEFINED';
 
  l_sts            KU$_STATUS;
 
 
BEGIN
 
BEGIN
  l_dp_handle := DBMS_DATAPUMP.open(
+
h1:=DBMS_DATAPUMP.ATTACH(JOB_NAME => '"MIG_CHANGED_TABLE"', JOB_OWNER => 'RTIS_MIG');
    operation  => 'EXPORT',
+
DBMS_DATAPUMP.STOP_JOB(h1,1,0);
    job_mode    => 'SCHEMA',
 
    remote_link => NULL,
 
    job_name    => 'EMP_EXPORT',
 
    version    => 'LATEST');
 
 
 
  DBMS_DATAPUMP.add_file(
 
    handle    => l_dp_handle,
 
    filename  => 'SCOTT.dmp',
 
    directory => 'TEST_DIR');
 
 
 
  DBMS_DATAPUMP.add_file(
 
    handle    => l_dp_handle,
 
    filename  => 'SCOTT.log',
 
    directory => 'TEST_DIR',
 
    filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
 
 
 
  DBMS_DATAPUMP.metadata_filter(
 
    handle => l_dp_handle,
 
    name  => 'SCHEMA_EXPR',
 
    value  => '= ''SCOTT''');
 
 
 
  DBMS_DATAPUMP.start_job(l_dp_handle);
 
 
 
  DBMS_DATAPUMP.detach(l_dp_handle);
 
 
END;
 
END;
/
 
 
</source>
 
</source>
  
작업이 시작되면 상태를 사용하여 확인할 수 있습니다.
+
{{:Oracle 데이터펌프 API활용}}
  
system@db10g> select * from dba_datapump_jobs;
+
== DB LINK를 이용한 파일 복사 ==
 
+
<source lang=sql>
External Tables (Unloading/Loading Data Using External Tables)
+
BEGIN
오라클은 데이터 펌프 기술에 대한 지원을 외부 테이블에 통합했습니다.
+
DBMS_FILE_TRANSFER.PUT_FILE(
ORACLE_DATAPUMP 액세스 드라이버는 데이터 펌프 내보내기 파일에 데이터를 언로드하고 나중에 다시로드 할 수 있습니다.
+
source_directory_object      => 'DATA_PUMP_DIR',
외부 테이블이 "AS"절을 사용하여 작성되면 데이터 언로드가 발생합니다.
+
source_file_name              => 'sample.dmp',
 
+
destination_directory_object => 'DATA_PUMP_DIR',
<source lang='sql'>
+
destination_file_name        => 'sample_copied.dmp',  
CREATE TABLE emp_xt
+
destination_database          => 'to_rds'  
  ORGANIZATION EXTERNAL
+
);
  (
+
END;
    TYPE ORACLE_DATAPUMP
+
/  
    DEFAULT DIRECTORY test_dir
 
    LOCATION ('emp_xt.dmp')
 
  )
 
  AS SELECT * FROM emp;
 
</source>
 
 
 
그런 다음 다음을 사용하여 데이터를 쿼리 할 수 ​​있습니다.
 
 
 
<source lang='sql'>
 
SELECT * FROM emp_xt;
 
</source>
 
 
 
기존 파일을 가리키는 외부 테이블을 작성하는 구.은 유사하지만 "AS"절이 없습니다. 이 경우 동일한 스키마를 수행하지만 동일한 인스턴스의 다른 스키마 또는 완전히 다른 인스턴스에있을 수 있습니다.
 
 
 
<source lang='sql'>
 
DROP TABLE emp_xt;
 
 
 
CREATE TABLE emp_xt (
 
  EMPNO    NUMBER(4),
 
  ENAME    VARCHAR2(10),
 
  JOB      VARCHAR2(9),
 
  MGR      NUMBER(4),
 
  HIREDATE  DATE,
 
  SAL      NUMBER(7,2),
 
  COMM      NUMBER(7,2),
 
  DEPTNO    NUMBER(2))
 
  ORGANIZATION EXTERNAL (
 
    TYPE ORACLE_DATAPUMP
 
    DEFAULT DIRECTORY test_dir
 
    LOCATION ('emp_xt.dmp')
 
  );
 
 
 
SELECT * FROM emp_xt;
 
</source>
 
 
 
ORACLE_DATAPUMP액세스 드라이버를 사용하여 외부 테이블을 작성하는 것은 외부 테이블 언로드로 작성된 파일을 덤프하는 것으로 제한됩니다.
 
 
 
Secure External Password Store
 
보안 외부 암호 저장소 를 사용하여 데이터 펌프에 대한 자격 증명을 제공 할 수도 있습니다 .
 
 
 
$ expdp /@db10g_test tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log
 
 
 
Help
 
이 HELP=Y옵션은 사용 가능한 매개 변수를 표시합니다.
 
 
 
expdp
 
  expdp help=y
 
 
 
Export: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 8:33
 
 
 
Copyright (c) 2003, Oracle.  All rights reserved.
 
 
 
Data Pump 익스포트 유틸리티는
 
Oracle 데이터베이스간에 데이터 오브젝트를 전송하는 메커니즘을 제공 합니다. 이 유틸리티는 다음 명령으로 호출됩니다.
 
 
 
  Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 
 
 
'expdp'명령 다음
 
에 다양한 매개 변수 를 입력하여 내보내기 실행 방법을 제어 할 수 있습니다 . 매개 변수를 지정하려면 다음
 
 
 
  Format:  expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
 
  Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
 
              or TABLES=(T1:P1,T1:P2), if T1 is partitioned table
 
 
 
USERID는 명령 행의 첫 번째 매개 변수 여야합니다.
 
 
 
<source>
 
키워드 설명 (기본값)
 
--------------------------------------------- ---------------------------------
 
ATTACH 기존 작업에 부착합니다 (예 : ATTACH [= 작업 이름]).
 
CONTENT 유효한 키워드가
 
                      (ALL), DATA_ONLY 및 METADATA_ONLY 인 위치를 언로드 할 데이터를 지정합니다 .
 
DIRECTORY 덤프 파일 및 로그 파일에 사용될 디렉토리 객체입니다.
 
DUMPFILE 대상 덤프 파일 (expdat.dmp)의 목록입니다 (
 
                      예 : DUMPFILE = scott1.dmp, scott2.dmp, dmpdir : scott3.dmp).
 
예상 키워드는 다음과 같습니다.
 
                      (블록) 및 통계.
 
ESTIMATE_ONLY 내보내기를 수행하지 않고 작업 추정을 계산하십시오.
 
EXCLUDE 특정 오브젝트 유형을 제외하십시오 (예 : EXCLUDE = TABLE : EMP).
 
FILESIZE 각 덤프 파일의 크기를 바이트 단위로 지정하십시오.
 
FLASHBACK_SCN 세션 스냅 샷을 다시 설정하는 데 사용되는 SCN입니다.
 
FLASHBACK_TIME 지정된 시간과 가장 가까운 SCN을 가져 오는 데 사용되는 시간입니다.
 
전체 데이터베이스 전체 내보내기 (N).
 
도움말 도움말 메시지 (N)를 표시합니다.
 
INCLUDE 특정 오브젝트 유형을 포함하십시오 (예 : INCLUDE = TABLE_DATA).
 
JOB_NAME 작성할 내보내기 작업의 이름.
 
LOGFILE 로그 파일 이름 (export.log).
 
NETWORK_LINK 소스 시스템에 대한 리모트 데이터베이스 링크의 이름.
 
NOLOGFILE 로그 파일 (N)을 쓰지 마십시오.
 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다.
 
PARFILE 매개 변수 파일을 지정하십시오.
 
QUERY 테이블의 서브 세트를 익스포트하는 데 사용되는 술어 절.
 
SCHEMAS 내보낼 스키마 목록 (로그인 스키마).
 
STATUS 빈도 (초) 작업 상태가 모니터 될
 
                      때 기본값 (0)이 사용 가능한 경우 새 상태를 표시합니다.
 
TABLES 내보낼 테이블 목록을 식별합니다 (하나의 스키마 만).
 
TABLESPACES 반출 할 테이블 공간 목록을 식별합니다.
 
TRANSPORT_FULL_CHECK 모든 테이블의 저장 영역 세그먼트를 확인하십시오 (N).
 
TRANSPORT_TABLESPACES 메타 데이터를 언로드 할 테이블 공간 목록.
 
VERSION 유효한 키워드가
 
                      (COMPATIBLE), LATEST 또는 유효한 데이터베이스 버전 인 경우 익스포트 할 오브젝트 버전.
 
 
 
다음 명령은 대화식 모드에서 유효합니다.
 
참고 : 약어는 허용됩니다.
 
 
 
명령 설명
 
------------------------------------------- -----------------------------------
 
ADD_FILE 덤프 파일을 덤프 파일 세트에 추가하십시오.
 
                      ADD_FILE =dumpfile-name
 
CONTINUE_CLIENT 로깅 모드로 돌아갑니다. 유휴 상태이면 작업이 다시 시작됩니다.
 
EXIT_CLIENT 클라이언트 세션을 종료하고 작업을 계속 실행합니다.
 
HELP 대화식 명령을 요약하십시오.
 
KILL_JOB 작업 분리 및 삭제.
 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다.
 
                      평행선 =.
 
START_JOB 현재 작업 시작 / 다시 시작.
 
STATUS 빈도 (초) 작업 상태가 모니터 될
 
                      때 기본값 (0)이 사용 가능한 경우 새 상태를 표시합니다.
 
                      STATUS = [interval]
 
STOP_JOB 작업 실행을 정상적으로 종료하고 클라이언트를 종료합니다.
 
                      STOP_JOB = IMMEDIATE는
 
                      Data Pump 작업을 즉시 종료합니다 .
 
 
 
The following commands are valid while in interactive mode.
 
Note: abbreviations are allowed
 
</source>
 
 
 
Oracle 10g Release 2 (10.2)는 다음 매개 변수를 추가했습니다.
 
 
 
<source>
 
키워드 설명 (기본값)
 
--------------------------------------------- ---------------------------------
 
DATA_OPTIONS 유일한 유효한 값인 데이터 계층 플래그는 다음과 같습니다.
 
                      XML_CLOBS-write XML 데이터 유형 CLOB 형식
 
ENCRYPTION 유효한 키워드
 
                      값이 ALL, DATA_ONLY, METADATA_ONLY,
 
                      ENCRYPTED_COLUMNS_ONLY 또는 NONE 인 덤프 파일의 일부 또는 전부를 암호화합니다 .
 
ENCRYPTION_ALGORITHM 유효한
 
                      키워드 값이 (AES128), AES192 및 AES256 인 경우 암호화를 수행하는 방법을 지정하십시오 .
 
ENCRYPTION_MODE 유효한 키워드가있는 곳에 암호화 키를 생성하는 방법
 
                      값은 DUAL, PASSWORD 및 (TRANSPARENT)입니다.
 
REMAP_DATA 데이터 변환 기능을 지정하십시오 (
 
                      예 : REMAP_DATA = EMP.EMPNO : REMAPPKG.EMPNO).
 
REUSE_DUMPFILES 대상 덤프 파일이 존재할 경우이를 겹쳐 씁니다 (N).
 
TRANSPORTABLE
 
                      유효한 키워드 값이 : ALWAYS, (NEVER) 인 경우 전송 가능 메소드를 사용할 수 있는지 지정하십시오 .
 
 
 
다음 명령은 대화식 모드에서 유효합니다.
 
참고 : 약어는 허용됩니다.
 
 
 
명령 설명
 
------------------------------------------- -----------------------------------
 
REUSE_DUMPFILES 대상 덤프 파일이 존재할 경우이를 덮어 씁니다 (N).
 
</source>
 
 
 
Oracle 11g Release 2 (11.2)는 도움말 출력의 형식을 변경하고 다음 매개 변수를 추가합니다.
 
 
 
<source>
 
CLUSTER
 
Utilize cluster resources and distribute workers across the Oracle RAC.
 
Valid keyword values are: [Y] and N.
 
 
 
SERVICE_NAME
 
Oracle RAC 리소스를 제한하는 활성 서비스 및 관련 리소스 그룹의 이름입니다
 
 
 
SOURCE_EDITION
 
메타 데이타의 추출에 사용하는 에디션
 
</source>
 
 
 
Oracle 12c Release 1 (12.1) added the following parameters.
 
 
 
ABORT_STEP
 
작업이 초기화 된 후 또는 지정된 객체에서 중지하십시오.
 
유효한 값은 -1 또는 N이며 여기서 N은 0 이상입니다.
 
N은 마스터 테이블에있는 오브젝트의 프로세스 순서 번호에 해당합니다.
 
 
 
ACCESS_METHOD
 
특정 메소드를 사용하여 데이터를 언로드하도록 내보내기하도록 지시합니다.
 
유효한 키워드 값은 [AUTOMATIC], DIRECT_PATH 및 EXTERNAL_TABLE입니다.
 
 
 
COMPRESSION_ALGORITHM
 
사용할 압축 알고리즘을 지정하십시오.
 
유효한 키워드 값은 [BASIC], LOW, MEDIUM 및 HIGH입니다.
 
 
 
ENCRYPTION_PWD_PROMPT
 
암호화 암호를 묻는 프롬프트를 표시할지 여부를 지정합니다.
 
표준 입력을 읽는 동안 터미널 에코는 표시되지 않습니다.
 
 
 
KEEP_MASTER
 
성공적으로 완료된 내보내기 작업 후에는 마스터 테이블을 보유하십시오 [NO].
 
 
 
MASTER_ONLY
 
마스터 테이블 만 가져온 다음 작업을 중지하십시오 [NO].
 
 
 
METRICS
 
추가 작업 정보를 내보내기 로그 파일 [NO] 에보고 합니다.
 
 
 
VIEWS_AS_TABLES
 
테이블로 익스포트 할 하나 이상의 뷰를 식별합니다.
 
예 : VIEWS_AS_TABLES = HR.EMP_DETAILS_VIEW.
 
 
 
Oracle 12c Release 2 (12.2)는 다음 매개 변수를 추가했습니다.
 
<source>
 
STOP_WORKER
 
걸려 있거나 걸린 작업자를 중지합니다.
 
 
 
TRACE
 
현재 작업의 추적 / 디버그 플래그를 설정합니다.
 
</source>
 
 
 
 
 
impdp
 
 
 
<source>
 
impdp help = y
 
 
 
가져 오기 : 릴리스 10.1.0.2.0 - 2004 년 9 월 11 일 토요일 17:22
 
 
 
Copyright (c) 2003, Oracle. 판권 소유.
 
 
 
 
 
Data Pump Import 유틸리티는
 
Oracle 데이터베이스간에 데이터 오브젝트를 전송하는 메커니즘을 제공 합니다. 이 유틸리티는 다음 명령으로 호출됩니다.
 
 
 
    예제 : impdp scott / tiger DIRECTORY = dmpdir DUMPFILE = scott.dmp
 
 
 
'impdp'명령 다음
 
에 다양한 매개 변수 를 입력하여 가져 오기 실행 방법을 제어 할 수 있습니다 . 매개 변수를 지정하려면 다음
 
 
 
    형식의 키워드를 사용하십시오. 형식 : impdp KEYWORD = value 또는 KEYWORD = (value1, value2, ..., valueN)  
 
    예 : impdp scott / tiger DIRECTORY = dmpdir DUMPFILE = scott.dmp
 
 
 
USERID는 명령 행.
 
 
 
키워드 설명 (기본값)
 
--------------------------------------------- ---------------------------------
 
ATTACH 기존 작업에 부착합니다 (예 : ATTACH [= 작업 이름]).
 
CONTENT 유효한 키워드가
 
                      (ALL), DATA_ONLY 및 METADATA_ONLY 인 로드 할 데이터를 지정합니다 .
 
DIRECTORY 덤프, 로그 및 sql 파일에 사용될 디렉토리 객체입니다.
 
DUMPFILE (expdat.dmp)에서 가져올 덤프 파일 목록입니다 (
 
                      예 : DUMPFILE = scott1.dmp, scott2.dmp, dmpdir : scott3.dmp).
 
예상 키워드
 
                      (BLOCKS) 및 STATISTICS 가 유효한 위치를 계산합니다 .
 
EXCLUDE 특정 오브젝트 유형을 제외하십시오 (예 : EXCLUDE = TABLE : EMP).
 
FLASHBACK_SCN 세션 스냅 샷을 다시 설정하는 데 사용되는 SCN입니다.
 
FLASHBACK_TIME 지정된 시간과 가장 가까운 SCN을 가져 오는 데 사용되는 시간입니다.
 
FULL 원본 (Y)에서 모든 것을 가져옵니다.
 
HELP 도움말 메시지 (N)를 표시합니다.
 
INCLUDE 특정 오브젝트 유형을 포함하십시오 (예 : INCLUDE = TABLE_DATA).
 
JOB_NAME 작성할 가져 오기 작업의 이름.
 
LOGFILE 로그 파일 이름 (import.log).
 
NETWORK_LINK 소스 시스템에 대한 리모트 데이터베이스 링크의 이름.
 
NOLOGFILE 로그 파일을 쓰지 마십시오.
 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다.
 
PARFILE 매개 변수 파일을 지정하십시오.
 
QUERY 테이블의 서브 세트를 가져 오는 데 사용되는 술어 절.
 
REMAP_DATAFILE 모든 DDL 문에서 데이터 파일 참조를 재정의합니다.
 
REMAP_SCHEMA 한 스키마의 오브젝트가 다른 스키마로로드됩니다.
 
REMAP_TABLESPACE 테이블 공간 오브젝트가 다른 테이블 공간으로 다시 맵핑됩니다.
 
REUSE_DATAFILES 테이블 공간이 이미 존재하는 경우 초기화됩니다 (N).
 
SCHEMAS 가져올 스키마 목록.
 
SKIP_UNUSABLE_INDEXES 인덱스 사용 불가 상태로 설정된 인덱스를 건너 뜁니다.
 
SQLFILE 모든 SQL DDL을 지정된 파일에 기록하십시오.
 
상태 빈도 (초) 작업 상태가 모니터링됩니다.
 
                      가능한 경우 기본값 (0)이 새로운 상태를 표시합니다.
 
STREAMS_CONFIGURATION Streams 메타 데이터의로드를 활성화합니다.
 
TABLE_EXISTS_ACTION 가져온 객체가 이미있는 경우 수행 할 작업입니다.
 
                      유효한 키워드 : (건너 뛰기), APPEND, REPLACE 및 TRUNCATE
 
TABLES 가져올 테이블 목록을 식별합니다.
 
TABLESPACES 반입 할 테이블 공간의 목록을 식별합니다.
 
TRANSFORM 특정 객체에 적용 (Y / N)하는 메타 데이터 변환입니다.
 
                      유효한 변환 키워드 : SEGMENT_ATTRIBUTES 및 STORAGE.
 
                      전의. TRANSFORM = SEGMENT_ATTRIBUTES : N : TABLE.
 
TRANSPORT_DATAFILES 전송 가능 모드로 반입 할 데이터 파일 목록.
 
TRANSPORT_FULL_CHECK 모든 테이블의 저장 영역 세그먼트를 확인하십시오 (N).
 
TRANSPORT_TABLESPACES 메타 데이터가로드 될 테이블 공간 목록.
 
                      NETWORK_LINK 모드 가져 오기 작업에서만 유효합니다.
 
VERSION 유효한 키워드가
 
                      (COMPATIBLE), LATEST 또는 유효한 데이터베이스 버전 인 경우 익스포트 할 오브젝트 버전.
 
                      NETWORK_LINK 및 SQLFILE에만 유효합니다.
 
 
 
다음 명령은 대화식 모드에서 유효합니다.
 
참고 : 약어는 허용됩니다.
 
 
 
명령 설명 (기본값) 11g
 
--------------------------------------- ---------------------------------------
 
CONTINUE_CLIENT 로깅 모드로 돌아갑니다. 유휴 상태이면 작업이 다시 시작됩니다.
 
EXIT_CLIENT 클라이언트 세션을 종료하고 작업을 계속 실행합니다.
 
HELP 대화식 명령을 요약하십시오.
 
KILL_JOB 작업 분리 및 삭제.
 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다.
 
                      평행선 =.
 
START_JOB 현재 작업 시작 / 다시 시작.
 
                      START_JOB = SKIP_CURRENT는
 
                      작업이 중단되었을 때 진행 중이던 작업을 건너 뛰고 작업을 시작합니다 .
 
STATUS 빈도 (초) 작업 상태가 모니터 될
 
                      때 기본값 (0)이 사용 가능한 경우 새 상태를 표시합니다.
 
                      STATUS = [interval]
 
STOP_JOB 작업 실행을 정상적으로 종료하고 클라이언트를 종료합니다.
 
                      STOP_JOB = IMMEDIATE는
 
                      Data Pump 작업을 즉시 종료합니다 .
 
</source>
 
Oracle 10g Release 2 (10.2)는 다음 매개 변수를 추가했습니다.
 
 
 
키워드 설명 (기본값)
 
--------------------------------------------- ---------------------------------
 
ENCRYPTION_PASSWORD 암호화 된 열 데이터에 액세스하기위한 암호 키입니다.
 
                      이 매개 변수는 네트워크 가져 오기 작업에는 유효하지 않습니다.
 
 
 
Oracle 11g Release 1 (11.1)은 다음 매개 변수를 추가했습니다.
 
 
 
키워드 설명 (기본값)
 
--------------------------------------------- ---------------------------------
 
DATA_OPTIONS 유일한 유효한 값인 데이터 계층 플래그 :
 
                      SKIP_CONSTRAINT_ERRORS - 제약 조건 오류가 없습니다. 치명적인.
 
PARTITION_OPTIONS
 
                      유효한 키워드가 있는 파티션을 변환하는
 
f}을 지정하십시오 . DEPARTITION, MERGE W (NONE) REMAP_DATA 데이터 변환 기능을 지정하십시오 (
 
                      예 : REMAP_DATA = EMP.EMPNO : REMAPPKG.EMPNO
 
REMAP_TABLE). 테이블 이름이 다른 테이블로 다시 맵핑됩니다.
 
                      예 : REMAP_TABLE = HR.EMPLOYEES : EMPS.
 
 
 
Oracle 11g Release 2 (11.2)는 도움말 출력의 형식을 변경하고 다음 매개 변수를 추가합니다.
 
 
 
CLUSTER
 
클러스터 리소스를 활용하여 오라클 RAC를 통해 노동자를 배포합니다.
 
유효한 키워드 값은 다음과 같습니다. [Y] 및 N.
 
 
 
SERVICE_NAME
 
Oracle RAC 리소스를 제한하는 활성 서비스 및 관련 리소스 그룹의 이름입니다.
 
 
 
SOURCE_EDITION
 
메타 데이타의 추출에 사용하는 에디션
 
 
 
TARGET_EDITION
 
메타 데이타의로드에 사용하는 에디션
 
 
 
Oracle 12c Release 1 (12.1)은 다음 매개 변수를 추가했습니다.
 
<source>
 
ABORT_STEP
 
작업이 초기화 된 후 또는 지정된 객체에서 중지하십시오.
 
유효한 값은 -1 또는 N이며 여기서 N은 0 이상입니다.
 
N은 마스터 테이블에있는 오브젝트의 프로세스 순서 번호에 해당합니다.
 
 
 
ACCESS_METHOD
 
특정 메소드를 사용하여 데이터를 언로드하도록 내보내기하도록 지시합니다.
 
유효한 키워드 값은 [AUTOMATIC], DIRECT_PATH 및 EXTERNAL_TABLE입니다.
 
 
 
ENCRYPTION_PWD_PROMPT
 
암호화 암호를 묻는 프롬프트를 표시할지 여부를 지정합니다.
 
표준 입력을 읽는 동안 터미널 에코는 표시되지 않습니다.
 
 
 
KEEP_MASTER
 
완료된 내보내기 작업 후에 마스터 테이블을 보유하십시오. [NO].
 
 
 
MASTER_ONLY
 
마스터 테이블 만 가져온 다음 작업을 중지하십시오 [NO].
 
 
 
METRICS
 
추가 작업 정보를 내보내기 로그 파일 [NO]에보고하십시오.
 
 
 
TRANSPORTABLE
 
이동 가능한 데이터 이동 선택 옵션.
 
유효한 키워드는 항상 및 [절대]입니다.
 
NETWORK_LINK 모드 가져 오기 작업에서만 유효합니다.
 
 
 
VIEWS_AS_TABLES
 
테이블로 가져올 뷰를 하나 이상 식별합니다.
 
예 : VIEWS_AS_TABLES = HR.EMP_DETAILS_VIEW.
 
네트워크 가져 오기 모드에서는 테이블 이름
 
을 뷰 이름에 추가 할 수 있습니다 .
 
</source>
 
 
 
Oracle 12c Release 2 (12.2)는 다음 매개 변수를 추가했습니다.
 
<source>
 
REMAP_DIRECTORY
 
플랫폼간에 데이터베이스를 이동할 때 디렉토리를 다시 매핑하십시오.
 
 
 
STOP_WORKER
 
걸려 있거나 걸린 작업자를 중지합니다.
 
 
 
TRACE
 
현재 작업의 추적 / 디버그 플래그를 설정합니다.
 
 
</source>
 
</source>
 +
[[Category:oracle]]

2023년 10월 14일 (토) 03:02 기준 최신판

thumb_up 추천메뉴 바로가기



1) 사용자 생성

SQL> create user new_scott identified by tiger;


2) 권한 추가

SQL> grant connect, resource to new_scott;


3) 디렉토리 권한 추가

SQL> grant read, write on directory MY_DMP_DIR to new_scott;
Grant succeeded.


4) 디비링크 생성권한(DBLINK 이용시)

SQL> grant create database link to new_scott;
SQL> connect new_scott/tiger
SQL> create database link OLD_DB connect to scott identified by tiger  using 'olddb.krenger.ch';

5) 디비링크 생성후 impdp 수행

  • 스키마를 변경(scott-> new_scott) 하여 import
impdp new_scott/tiger directory=MY_DMP_DIR LOGFILE=dblink_transfer.log network_link=OLD_DB remap_schema=scott:new_scott




1 IMPORT DP[편집]

1.1 IMPORT 사용 예시[편집]

impdp help = y
impdp scott / tiger 
DIRECTORY = dmpdir 
DUMPFILE = scott.dmp

'impdp'명령 다음 에 다양한 매개 변수 를 입력하여 가져 오기 실행 방법을 제어 할 수 있습니다 . 매개 변수를 지정하려면 다음 형식의 키워드를 사용하십시오.

impdp KEYWORD = value 또는 KEYWORD = (value1, value2, ..., valueN)

1.2 DBLINK로 IMPORT PUMP 처리 방법[편집]

1.2.1 1.DB 링크 생성[편집]

CREATE PUBLIC DATABASE LINK XXX_LINK 
CONNECT TO CYKIM identified by **** 
  USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=1.2.3.4)(Port=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)))';

1.2.2 2.IMPDP 파라미터 파일로 실행[편집]

 attach_file

주요사항
  • 주석은 '#'
  • INCLUDE 와 EXCLUDE 는 동시사용 불가

impdp parfile=파라미터파일


  • 여러개 파일로 분할 expdp + 특정 테이블 impdp 작업
  • parfile='파일.par'



USERID=SCOTT/TIGER

JOB_NAME=JOB_MIG2STG_20191002_01
LOGFILE =JOB_MIG2STG_20191002_01.LOG

NETWORK_LINK=XXX_DB_LINK
DIRECTORY=DATA_PUMP_DIR 

#DUMPFILE=[DATA_PUMP_DIR:]XXXDB_FULL.DMP #[디렉토리 지정시]

SCHEMAS=('SCOTT','ERP')
 
TABLE_EXISTS_ACTION=REPLACE 

#ALL/DATA_ONLY/METADATA_ONLY

CONTENT=METADATA_ONLY  

INCLUDE=TABLE:"IN ('EMP','DEPT') "
#INCLUDE=TABLE:"IN (SELECT 'EMP' FROM DUAL) "  -- SQL로 처리 

#EXCLUDE=STATISTICS,GRANT   -- 제외

1.2.3 IMPORT 파라미터 샘플[편집]

$ impdp parfile=expdp_pump.par
* impdp_pump.par
userid=scott/tiger
directory=datapump
job_name=datapump
dumpfile=expdp_%U.dmp
tables=TT700
table_exists_action=append

1.3 테이블만 IMPORT(테이블 존재시 TRUNCATE)[편집]

impdp scott/tiger
tables=SCOTT.EMP,SCOTT.DEPT
network_link=XXX_DB_LINK
content=data_only 
directory=PUMP_TEST  
table_exists_action=truncate 
logfile=XXX_DUMP.log

1.4 Package, Function, Procedure 만 import 하기[편집]

※ INCLUDE 에서 사용할 수 있는 OBJECT_TYPE은 아래 뷰를 이용하여 확인 가능

   DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, and TABLE_EXPORT_OBJECTS.
$impdp system/password directory=temp_dir schemas=scott dumpfile=scott%U.dmp  logfile=scott.log 
          include=PACKAGE,FUNCTION,PROCEDURE

1.5 IMPORT DP 파라미터[편집]

1.5.1 통계정보를 제외[편집]

impdp system 
directory=DATA_PUMP_DIR 
LOGFILE=MyImpdp.log 
schemas=MyRemoteDBSchema1,MyRemoteDBSchema2 
exclude=STATISTICS

1.5.2 스키마 선택[편집]

impdp system 
directory=DATA_PUMP_DIR 
LOGFILE=MyExpdp.log 
network_link=MyRemoteDBLink 
schemas=MyRemoteDBSchema1,MyR


  • directory 로그가 저장될 오라클디렉토리명
  • logfile 로그파일명
  • network_link DB 링크를 사용
  • remap_schema scott 유저를 new_scott 유저로
  • Import multiple schemas DBA권한필요


impdp simondba@kdb01 
directory=ADMIN_DUMP_DIR 
LOGFILE=dblink_transfer.log 
network_link=OLD_DB 
schemas=simon,scott,hr

1.5.3 IMPORT DP 상세 파라미터[편집]

USERID는 명령 행.

ATTACH 기존 작업에 부착합니다 (예 : ATTACH [= 작업 이름]). 
CONTENT 유효한 키워드가 (ALL), DATA_ONLY 및 METADATA_ONLY 인 로드 할 데이터를 지정합니다 . 
DIRECTORY 덤프, 로그 및 sql 파일에 사용될 디렉토리 객체입니다. 
DUMPFILE (expdat.dmp)에서 가져올 덤프 파일 목록입니다 ( 예 : DUMPFILE = scott1.dmp, scott2.dmp, dmpdir : scott3.dmp). 
예상 키워드 (BLOCKS) 및 STATISTICS 가 유효한 위치를 계산합니다 .
EXCLUDE 특정 오브젝트 유형을 제외하십시오 (예 : EXCLUDE = TABLE : EMP). 
FLASHBACK_SCN 세션 스냅 샷을 다시 설정하는 데 사용되는 SCN입니다. 
FLASHBACK_TIME 지정된 시간과 가장 가까운 SCN을 가져 오는 데 사용되는 시간입니다. 
FULL 원본 (Y)에서 모든 것을 가져옵니다. 
HELP 도움말 메시지 (N)를 표시합니다. 
INCLUDE 특정 오브젝트 유형을 포함하십시오 (예 : INCLUDE = TABLE_DATA). 
JOB_NAME 작성할 가져 오기 작업의 이름. 
LOGFILE 로그 파일 이름 (import.log). 
NETWORK_LINK 소스 시스템에 대한 리모트 데이터베이스 링크의 이름. 
NOLOGFILE 로그 파일을 쓰지 마십시오. 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다.
PARFILE 매개 변수 파일을 지정하십시오. 
QUERY 테이블의 서브 세트를 가져 오는 데 사용되는 술어 절. 
REMAP_DATAFILE 모든 DDL 문에서 데이터 파일 참조를 재정의합니다. 
REMAP_SCHEMA 한 스키마의 오브젝트가 다른 스키마로로드됩니다. 
REMAP_TABLESPACE 테이블 공간 오브젝트가 다른 테이블 공간으로 다시 맵핑됩니다. 
REUSE_DATAFILES 테이블 공간이 이미 존재하는 경우 초기화됩니다 (N). 
SCHEMAS 가져올 스키마 목록. 
SKIP_UNUSABLE_INDEXES 인덱스 사용 불가 상태로 설정된 인덱스를 건너 뜁니다. 
SQLFILE 모든 SQL DDL을 지정된 파일에 기록하십시오. 
TREAMS_CONFIGURATION Streams 메타 데이터의로드를 활성화합니다. 
TABLE_EXISTS_ACTION 가져온 객체가 이미있는 경우 수행 할 작업입니다. 유효한 키워드 : (건너 뛰기),APPEND, REPLACE 및 TRUNCATE 
                    SKIP leaves the table as is and moves on to the next object. This is not a valid option if the CONTENT parameter is set to DATA_ONLY.
                    APPEND loads rows from the source and leaves existing rows unchanged.
                    TRUNCATE deletes existing rows and then loads rows from the source.
                    REPLACE drops the existing table and then creates and loads it from the source. This is not a valid option if the CONTENT parameter is set to DATA_ONLY.

TABLES 가져올 테이블 목록을 식별합니다. 
TABLESPACES 반입 할 테이블 공간의 목록을 식별합니다. 
TRANSFORM 특정 객체에 적용 (Y / N)하는 메타 데이터 변환입니다. 유효한 변환 키워드 : SEGMENT_ATTRIBUTES 및 STORAGE. 전의. TRANSFORM = SEGMENT_ATTRIBUTES : N : TABLE. 
TRANSPORT_DATAFILES 전송 가능 모드로 반입 할 데이터 파일 목록.
TRANSPORT_FULL_CHECK 모든 테이블의 저장 영역 세그먼트를 확인하십시오 (N). 
TRANSPORT_TABLESPACES 메타 데이터가로드 될 테이블 공간 목록. NETWORK_LINK 모드 가져 오기 작업에서만 유효합니다. 
VERSION 유효한 키워드가 (COMPATIBLE), LATEST 또는 유효한 데이터베이스 버전 인 경우 익스포트 할 오브젝트 버전. 
                      NETWORK_LINK 및 SQLFILE에만 유효합니다.

다음 명령은 대화식 모드에서 유효합니다. 참고 : 약어 허용.

CONTINUE_CLIENT 로깅 모드로 돌아갑니다. 유휴 상태이면 작업이 다시 시작됩니다. 
EXIT_CLIENT 클라이언트 세션을 종료하고 작업을 계속 실행합니다. 
HELP 대화식 명령을 요약하십시오. 
KILL_JOB 작업 분리 및 삭제. 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다. 
                      PARALLEL =. 
START_JOB 현재 작업 시작 / 다시 시작. 
                      START_JOB = SKIP_CURRENT는 작업이 중단되었을 때 진행 중이던 작업을 건너 뛰고 작업을 시작합니다 . 

STATUS 빈도 (초) 작업 상태가 모니터 될 
                                           STATUS = [interval] 
STOP_JOB 작업 실행을 정상적으로 종료하고 클라이언트를 종료합니다. 
                      STOP_JOB = IMMEDIATE는 Data Pump 작업을 즉시 종료합니다 .

Oracle 10g Release 2 (10.2)는 다음 매개 변수를 추가했습니다.

ENCRYPTION_PASSWORD 암호화 된 열 데이터에 액세스하기위한 암호 키입니다. 이 매개 변수는 네트워크 가져 오기 작업에는 유효하지 않습니다.

Oracle 11g Release 1 (11.1)은 다음 매개 변수를 추가했습니다.

DATA_OPTIONS 유일한 유효한 값인 데이터 계층 플래그 : SKIP_CONSTRAINT_ERRORS - 제약 조건 오류가 없습니다. 치명적인. 
 PARTITION_OPTIONS   유효한 키워드가 있는 파티션을 변환하는 f}을 지정하십시오 . 
DEPARTITION, MERGE W (NONE) REMAP_DATA 데이터 변환 기능을 지정하십시오 ( 
                      예 : REMAP_DATA = EMP.EMPNO : REMAPPKG.EMPNO 
 REMAP_TABLE). 테이블 이름이 다른 테이블로 다시 맵핑됩니다. 
                      예 : REMAP_TABLE = HR.EMPLOYEES : EMPS.

Oracle 11g Release 2 (11.2)는 도움말 출력의 형식을 변경하고 다음 매개 변수를 추가합니다.

CLUSTER 클러스터 리소스를 활용하여 오라클 RAC를 통해 Worker를 배포합니다. 유효한 키워드 값은 다음과 같습니다. [Y] 및 N. 
SERVICE_NAME Oracle RAC 리소스를 제한하는 활성 서비스 및 관련 리소스 그룹의 이름입니다. 
SOURCE_EDITION 메타 데이타의 추출에 사용하는 에디션 
TARGET_EDITION 메타 데이타의로드에 사용하는 에디션

Oracle 12c Release 1 (12.1)은 다음 매개 변수를 추가했습니다.

ABORT_STEP 작업이 초기화 된 후 또는 지정된 객체에서 중지하십시오. 유효한 값은 -1 또는 N이며 여기서 N은 0 이상입니다. 
N은 마스터 테이블에있는 오브젝트의 프로세스 순서 번호에 해당합니다. 

ACCESS_METHOD 특정 메소드를 사용하여 데이터를 언로드하도록 내보내기하도록 지시합니다. 유효한 키워드 값은 [AUTOMATIC], DIRECT_PATH 및 EXTERNAL_TABLE입니다. 

ENCRYPTION_PWD_PROMPT 암호화 암호를 묻는 프롬프트를 표시할지 여부를 지정합니다. 표준 입력을 읽는 동안 터미널 에코는 표시되지 않습니다. 

KEEP_MASTER 완료된 내보내기 작업 후에 마스터 테이블을 보유하십시오. [NO]. 

MASTER_ONLY 마스터 테이블 만 가져온 다음 작업을 중지하십시오 [NO]. 

METRICS     추가 작업 정보를 내보내기 로그 파일 [NO]에보고하십시오. 

TRANSPORTABLE   이동 가능한 데이터 이동 선택 옵션. 
                유효한 키워드는 항상 및 [절대]입니다. 
                NETWORK_LINK 모드 가져 오기 작업에서만 유효합니다. 

VIEWS_AS_TABLES 테이블로 가져올 뷰를 하나 이상 식별합니다. 
                예 : VIEWS_AS_TABLES = HR.EMP_DETAILS_VIEW. 네트워크 가져 오기 모드에서는 테이블 이름 
을 뷰 이름에 추가 할 수 있습니다 .

Oracle 12c Release 2 (12.2)는 다음 매개 변수를 추가했습니다.

REMAP_DIRECTORY 플랫폼간에 데이터베이스를 이동할 때 디렉토리를 다시 매핑하십시오. 
STOP_WORKER     걸려 있거나 걸린 작업자를 중지합니다. 
TRACE          현재 작업의 추적 / 디버그 플래그를 설정합니다.

1.6 IMPORT API[편집]

1.6.1 IMPORT 스키마/테이블 API[편집]

DECLARE
 dph NUMBER;
 v_job_name VARCHAR(100) := 'IMP_JOB_TEST';
 
BEGIN
-- DB_LINK 이용 작업시 
  dph := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA'  ,job_name => v_job_name, remote_link => 'db링크명');

-- 덤프파일 이용 작업시  
--  dbms_datapump.add_file(handle => dph,
--                         filename => 'EXPIMP%U.DMP',
--                         directory => 'EXPIMP', filetype=>1);
-- 로그 

  dbms_datapump.add_file(handle => dph,
                         filename => v_job_name||'.log',
                         directory => 'DATA_PUMP_DIR', filetype=>3);

-- 스키마 정보
 DBMS_DATAPUMP.METADATA_FILTER(handle => dph , 
                               name   => 'SCHEMA_EXPR', 
                               value  => ' IN (''MIG_BACKUP'')');
 
 -- 테이블 존재시 TRUNCATE/REPLACE/APPEND  
  dbms_datapump.set_parameter(handle => dph,
                              name => 'TABLE_EXISTS_ACTION',
                              value =>'REPLACE');

-- 테이블 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => dph
                             ,name   => 'NAME_EXPR'
                             ,value  => ' IN (''TB_TEST'')'
                             ,object_type => 'TABLE'
                             );
                             
  dbms_datapump.start_job(dph);

  dbms_datapump.detach(dph);
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line('Error:' || sqlerrm || ' on Job-ID:' || dph);
END;
/

1.6.2 IMPORT 개별 TABLE (복구시)[편집]

DECLARE
 dph NUMBER;
 v_job_name VARCHAR(100) := 'IMP_JOB_TABLE_RECOVERY';
 
BEGIN
-- DB_LINK 이용 
  dph := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA'  ,job_name => v_job_name); -- , remote_link => 'db링크명'

-- 덤프파일 작업시  
  dbms_datapump.add_file(handle => dph,
                         filename => 'EXP_EMP_20200102_01.EXP',
                         directory => 'DATA_PUMP_DIR', filetype=>1);
-- 로그 

  dbms_datapump.add_file(handle => dph,
                         filename => v_job_name||'.log',
                         directory => 'DATA_PUMP_DIR', filetype=>3);

-- 스키마 정보
 DBMS_DATAPUMP.METADATA_FILTER(handle => dph , 
                               name   => 'SCHEMA_EXPR', 
                               value  => ' IN (''EMP'')');
 
 -- 테이블 존재시 TRUNCATE/REPLACE/APPEND  
  dbms_datapump.set_parameter(handle => dph,
                              name => 'TABLE_EXISTS_ACTION',
                              value =>'TRUNCATE');

-- 테이블 정보
DBMS_DATAPUMP.METADATA_FILTER(handle => dph
                             ,name   => 'NAME_EXPR'
                             ,value  => ' IN (''TB_TEST'')'
                             ,object_type => 'TABLE'
                             );
                             
  dbms_datapump.start_job(dph);

  dbms_datapump.detach(dph);
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line('Error:' || sqlerrm || ' on Job-ID:' || dph);
END;
/

2 EXPORT DP[편집]

2.1 EXPORT 파라미터 작성[편집]

expdp 예시)
$ expdp parfile=expdp_pump.par
  • expdp_pump.par
userid=system/oracle
directory=datapump
job_name=datapump
full=y
dumpfile= expdp_%U.dmp
filesize=100M


2.2 Package, Function, Procedure 만 EXPORT 하기[편집]

$expdp system/password directory=temp_dir filesize=10G schemas=scott dumpfile=scott%U.dmp logfile=scott.log 
          include=INDEX,PACKAGE,FUNCTION,PROCEDURE

2.3 EXPORT DP 파라미터[편집]

다양한 매개 변수 를 입력하여 내보내기 실행 방법을 제어 할 수 있습니다.

매개 변수를 지정하려면 다음

expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)

예시:
expdp scott/tiger 
DUMPFILE=scott.dmp 
DIRECTORY=dmpdir 
SCHEMAS=scott
-- TABLES=(T1:P1,T1:P2)

USERID는 명령 행의 첫 번째 매개 변수 여야 함.

ATTACH 기존 작업에 부착합니다 (예 : ATTACH [= 작업 이름]). 
CONTENT 유효한 키워드가 (ALL), DATA_ONLY 및 METADATA_ONLY 인 위치를 언로드 할 데이터를 지정합니다 . 
DIRECTORY 덤프 파일 및 로그 파일에 사용될 디렉토리 객체입니다. 
DUMPFILE 대상 덤프 파일 (expdat.dmp)의 목록입니다 ( 
예 : DUMPFILE = scott1.dmp, scott2.dmp, dmpdir : scott3.dmp). 
예상 키워드는 다음과 같습니다. (블록) 및 통계. 
ESTIMATE_ONLY 내보내기를 수행하지 않고 작업 추정을 계산하십시오. 
EXCLUDE 특정 오브젝트 유형을 제외하십시오 (예 : EXCLUDE = TABLE : EMP). 
FILESIZE 각 덤프 파일의 크기를 바이트 단위로 지정하십시오. 
FLASHBACK_SCN 세션 스냅 샷을 다시 설정하는 데 사용되는 SCN입니다. 
FLASHBACK_TIME 지정된 시간과 가장 가까운 SCN을 가져 오는 데 사용되는 시간입니다. 
전체 데이터베이스 전체 내보내기 (N). 
도움말 도움말 메시지 (N)를 표시합니다. 
INCLUDE 특정 오브젝트 유형을 포함하십시오 (예 : INCLUDE = TABLE_DATA). 
JOB_NAME 작성할 내보내기 작업의 이름. 
LOGFILE 로그 파일 이름 (export.log).
NETWORK_LINK 소스 시스템에 대한 리모트 데이터베이스 링크의 이름. 
NOLOGFILE 로그 파일 (N)을 쓰지 마십시오. 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다. 
PARFILE 매개 변수 파일을 지정하십시오. 
QUERY 테이블의 서브 세트를 익스포트하는 데 사용되는 술어 절. 
SCHEMAS 내보낼 스키마 목록 (로그인 스키마). 
STATUS 빈도 (초) 작업 상태가 모니터 될 
                      ABLES 내보낼 테이블 목록을 식별합니다 (하나의 스키마 만). 
TABLESPACES 반출 할 테이블 공간 목록을 식별합니다.
TRANSPORT_FULL_CHECK 모든 테이블의 저장 영역 세그먼트를 확인하십시오 (N). 
TRANSPORT_TABLESPACES 메타 데이터를 언로드 할 테이블 공간 목록. 
VERSION 유효한 키워드가 (COMPATIBLE), LATEST 또는 유효한 데이터베이스 버전 인 경우 익스포트 할 오브젝트 버전.

다음 명령은 대화식 모드에서 유효합니다. 참고 : 약어는 허용됩니다.

명령 설명 

ADD_FILE 덤프 파일을 덤프 파일 세트에 추가하십시오. 
                      ADD_FILE =dumpfile-name 
CONTINUE_CLIENT 로깅 모드로 돌아갑니다. 유휴 상태이면 작업이 다시 시작됩니다. 
EXIT_CLIENT 클라이언트 세션을 종료하고 작업을 계속 실행합니다. 
HELP 대화식 명령을 요약하십시오. 
KILL_JOB 작업 분리 및 삭제. 
PARALLEL 현재 작업의 활성 작업자 수를 변경합니다. 
                      평행선 =. 
START_JOB 현재 작업 시작 / 다시 시작. 
STATUS 빈도 (초) 작업 상태가 모니터 될 
                                           STATUS = [interval] 
STOP_JOB 작업 실행을 정상적으로 종료하고 클라이언트를 종료합니다. 
                      STOP_JOB = IMMEDIATE는 
                      Data Pump 작업을 즉시 종료합니다 .

The following commands are valid while in interactive mode.
Note: abbreviations are allowed

Oracle 10g Release 2 (10.2)는 다음 매개 변수를 추가했습니다.

DATA_OPTIONS 유일한 유효한 값인 데이터 계층 플래그는 다음과 같습니다. 
                      XML_CLOBS-write XML 데이터 유형 CLOB 형식 
ENCRYPTION 유효한 키워드 
                      값이 ALL, DATA_ONLY, METADATA_ONLY, 
                      ENCRYPTED_COLUMNS_ONLY 또는 NONE 인 덤프 파일의 일부 또는 전부를 암호화합니다 . 
ENCRYPTION_ALGORITHM 유효한 
                      키워드 값이 (AES128), AES192 및 AES256 인 경우 암호화를 수행하는 방법을 지정하십시오 . 
ENCRYPTION_MODE 유효한 키워드가있는 곳에 암호화 키를 생성하는 방법
                      값은 DUAL, PASSWORD 및 (TRANSPARENT)입니다. 
REMAP_DATA 데이터 변환 기능을 지정하십시오 ( 
                      예 : REMAP_DATA = EMP.EMPNO : REMAPPKG.EMPNO). 
REUSE_DUMPFILES 대상 덤프 파일이 존재할 경우이를 겹쳐 씁니다 (N). 
TRANSPORTABLE 
                      유효한 키워드 값이 : ALWAYS, (NEVER) 인 경우 전송 가능 메소드를 사용할 수 있는지 지정하십시오 . 

다음 명령은 대화식 모드에서 유효합니다. 
참고 : 약어는 허용됩니다. 

명령 설명 

REUSE_DUMPFILES 대상 덤프 파일이 존재할 경우이를 덮어 씁니다 (N).

Oracle 11g Release 2 (11.2)는 도움말 출력의 형식을 변경하고 다음 매개 변수를 추가합니다.

CLUSTER
Utilize cluster resources and distribute workers across the Oracle RAC.
Valid keyword values are: [Y] and N.

 SERVICE_NAME
Oracle RAC 리소스를 제한하는 활성 서비스 및 관련 리소스 그룹의 이름입니다

 SOURCE_EDITION
메타 데이타의 추출에 사용하는 에디션

Oracle 12c Release 1 (12.1) added the following parameters.

ABORT_STEP
작업이 초기화 된 후 또는 지정된 객체에서 중지하십시오. 
유효한 값은 -1 또는 N이며 여기서 N은 0 이상입니다. 
N은 마스터 테이블에있는 오브젝트의 프로세스 순서 번호에 해당합니다. 

 ACCESS_METHOD
특정 메소드를 사용하여 데이터를 언로드하도록 내보내기하도록 지시합니다. 
유효한 키워드 값은 [AUTOMATIC], DIRECT_PATH 및 EXTERNAL_TABLE입니다. 

 COMPRESSION_ALGORITHM
사용할 압축 알고리즘을 지정하십시오. 
유효한 키워드 값은 [BASIC], LOW, MEDIUM 및 HIGH입니다. 

 ENCRYPTION_PWD_PROMPT
암호화 암호를 묻는 프롬프트를 표시할지 여부를 지정합니다. 
표준 입력을 읽는 동안 터미널 에코는 표시되지 않습니다. 

 KEEP_MASTER
성공적으로 완료된 내보내기 작업 후에는 마스터 테이블을 보유하십시오 [NO]. 

 MASTER_ONLY
마스터 테이블 만 가져온 다음 작업을 중지하십시오 [NO]. 

 METRICS
추가 작업 정보를 내보내기 로그 파일 [NO] 에보고 합니다. 

 VIEWS_AS_TABLES
테이블로 익스포트 할 하나 이상의 뷰를 식별합니다. 
예 : VIEWS_AS_TABLES = HR.EMP_DETAILS_VIEW.

Oracle 12c Release 2 (12.2)는 다음 매개 변수를 추가했습니다.

STOP_WORKER 
걸려 있거나 걸린 작업자를 중지합니다. 

TRACE 
현재 작업의 추적 / 디버그 플래그를 설정합니다.

3 데이터펌프 작업 관리 및 모니터링[편집]

현재 작업중인 datapump 작업들의 내용을 dba_datapump_jobs 딕셔너리를 통해 확인 가능



SELECT owner_name, job_name, operation, job_mode, state 
  FROM dba_datapump_jobs;
select substr(sql_text,instr(sql_text,'INTO "'),30) table_name,
rows_processed,
round((sysdate-to_date(first_load_time,'yyyy-mm-dd hh24:mi:ss'))*24*60,1) minutes,
trunc(rows_processed/((sysdate-to_date(first_load_time,'yyyy-mm-dd hh24:mi:ss'))*24*60)) rows_per_min
from sys.v_$sqlarea
where sql_text like 'INSERT %INTO "%'
and command_type = 2
and open_versions > 0;

3.1 Datapump 작업 진행사항[편집]

SELECT X.JOB_NAME
     , B.STATE
     , B.JOB_MODE
     , B.DEGREE
     , X.OWNER_NAME
     , Z.SQL_TEXT
     , P.MESSAGE
     , P.TOTALWORK
     , P.SOFAR
     , ROUND ( (P.SOFAR / P.TOTALWORK) * 100, 2) DONE
     , P.TIME_REMAINING
  FROM DBA_DATAPUMP_JOBS B
  LEFT JOIN DBA_DATAPUMP_SESSIONS X ON (X.JOB_NAME = B.JOB_NAME)
  LEFT JOIN V$SESSION Y ON (Y.SADDR = X.SADDR)
  LEFT JOIN V$SQL Z ON (Y.SQL_ID = Z.SQL_ID)
  LEFT JOIN V$SESSION_LONGOPS P ON (P.SQL_ID = Y.SQL_ID)
-- WHERE Y.MODULE = 'Data Pump Worker' AND P.TIME_REMAINING > 0
;

4 데이터펌프(DATAPUMP) JOB 중지[편집]

SELECT * FROM DBA_DATAPUMP_JOBS;

4.1 IMPDP ATTACH=JOB 접속 후[편집]

$>IMPDP SCOTT/TIGER@DB ATTACH=JOB명 
KILL_JOB
STOP_JOB #STOP_JOB = IMMEDIATE 즉시 종료

4.2 API 이용 정지[편집]

  • 주의) 즉시 정지 하지 않음
DECLARE
h1 NUMBER;
BEGIN
h1:=DBMS_DATAPUMP.ATTACH(JOB_NAME => '"MIG_CHANGED_TABLE"', JOB_OWNER => 'RTIS_MIG');
DBMS_DATAPUMP.STOP_JOB(h1,1,0);
END;

5 EXPORT API[편집]

5.1 스키마 EXPORT[편집]

DECLARE
    hndl NUMBER;
    TAG_NAME  VARCHAR2(30) := 'EXP_MIG_TEST01';
BEGIN
    hndl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT'
                              , job_mode => 'SCHEMA' -- FULL, SCHEMA, TABLE, TABLESPACE, TRANSPORTABLE
                              , job_name=>'JOB_'||TAG_NAME
                              --, remote_link => 'DBLINK_NAME', version => 'LATEST'
                              );
    DBMS_DATAPUMP.ADD_FILE( handle => hndl, filename => TAG_NAME||'.dmp', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE, reusefile=>1);
    DBMS_DATAPUMP.ADD_FILE( handle => hndl, filename => TAG_NAME||'.log', directory => 'DATA_PUMP_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
    
    -- DBMS_DATAPUMP.SET_PARAMETER(handle=> hndl, name=> 'INCLUDE_METADATA', value=> 1); -- META 포함여부
    DBMS_DATAPUMP.DATA_FILTER(handle=> hndl, name=> 'INCLUDE_ROWS', value=> 0);  -- DATA 포함 여부 0, 
    DBMS_DATAPUMP.METADATA_FILTER(handle=> hndl, name=> 'SCHEMA_EXPR', value=>'IN (''FED40'',''TTT'')');
    -- DBMS_DATAPUMP.METADATA_FILTER(handle=> hndl, name=> 'NAME_EXPR', value=>'IN (''FED40'', ''TEST'')');
    -- DBMS_DATAPUMP.METADATA_FILTER(handle=> hndl, name=> 'NAME_LIST', value=>'''EMP'',''DEPT''');

    
    DBMS_DATAPUMP.START_JOB(hndl);
END;

5.2 테이블 EXPORT API[편집]

-- 1.테이블 DUMP EXPORT 스크립트

DECLARE
hdnl NUMBER;

BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name=>'JOB_EXP_TB_RC_JEJU_14');

DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'INIT_BK_TB_RC_JEJU_14_20190910.EXP', directory => 'DATAPUMP2', filetype => dbms_datapump.ku$_file_type_dump_file ,reusefile=>1);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'INIT_BK_TB_RC_JEJU_14_20190910.LOG', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file  ,reusefile=>1);

-- 스키마 정보 
 DBMS_DATAPUMP.METADATA_FILTER(handle => hdnl,
                               name   => 'SCHEMA_EXPR',
                               value  => ' IN (''유저명'')'
                               );
-- 테이블 정보  
DBMS_DATAPUMP.METADATA_FILTER(handle => hdnl
                             ,name   => 'NAME_EXPR'
                             ,value  => ' IN (''테이블명'')'
                             ,object_type => 'TABLE'
                             );

DBMS_DATAPUMP.START_JOB(hdnl);
END;

6 데이터펌프 로그파일 읽기 API[편집]

DECLARE 
V1 VARCHAR2(200); --32767
F1 UTL_FILE.FILE_TYPE; 

BEGIN 
    F1 := UTL_FILE.FOPEN('DATA_PUMP_DIR','INIT_BK_TB_RC_JEJU_12_20190910.LOG','R');	
Loop
	BEGIN
		UTL_FILE.GET_LINE(F1,V1); 
		dbms_output.put_line(V1);
		EXCEPTION WHEN No_Data_Found THEN EXIT; 
	END;
end loop;

IF UTL_FILE.IS_OPEN(F1) THEN
	dbms_output.put_line('File is Open');
end if;

UTL_FILE.FCLOSE(F1);	
END;

7 파일 복사(ASM등)[편집]

 attach_file OS상의 파일복사 명령를 DB에서 직접 수행이 가능.

  • DBMS_FILE_TRANSFER.COPY_FILE 패키지/함수
  • 소스 디렉토리에서 파일을 읽고 대상 디렉토리에 복사
  • ASM 과 로컬 디스크간 복사
  • 소스 및 대상 디렉토리는 로컬 파일 시스템에 있거나 ASM (Automatic Storage Management) 디스크 그룹에 있거나

로컬 파일 시스템과 ASM간에 어느 방향 으로든 복사 할 수 있음.

BEGIN
DBMS_FILE_TRANSFER.COPY_FILE(
  source_directory_object      =>  'SOURCEDIR' -- 소스 디렉토리 
, source_file_name             => 't_xdbtmp.f' -- 소스 파일
, destination_directory_object => 'DGROUP'     -- 타켓 디렉토리
, destination_file_name        =>'t_xdbtmp.f'  -- 타겟 파일
);
END;
/

7.1 DB LINK를 이용한 파일 복사(밀어 넣기)[편집]

 attach_file DBMS_FILE_TRANSFER.PUT_FILE 패키지/함수

  • 소스 에서 프로시져 실행 해야 함.
  • 소스 => 타겟으로 복사
  • 로컬 파일 또는 ASM을 읽고 원격 데이터베이스에 접속하여 원격 파일 시스템에 파일 사본을 작성합니다.
  • DB링크 간의 DUMP파일 복사가 가능(.log파일은 복사 안됨,12c)

BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object       => 'DATA_PUMP_DIR',    -- 패키지 실행하는 DB
source_file_name              => 'sample.dmp',       -- 패키지 실행하는 DIRECTORY의 덤프파일명
destination_directory_object  => 'DATA_PUMP_DIR2',   -- DB링크 원격지 디렉토리
destination_file_name         => 'sample_copied.dmp',-- DB링크 원격지에 저장될 파일명
destination_database          => '디비링크명' 
);
END;
/

7.2 파일 복사(가져오기)[편집]

 attach_file DBMS_FILE_TRANSFER.GET_FILE

  • 원격 데이터베이스에 접속하여 원격 파일을 로컬 파일 시스템 또는 ASM에 파일 복사.
  • 절차가 성공적으로 완료 될 때까지 대상 파일이 닫히지 않음.

BEGIN
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object       => 'DATA_PUMP_DIR',
source_file_name              => 'sample.dmp',
source_database               => '디비링크명',
destination_directory_object  => 'DATA_PUMP_DIR2', 
destination_file_name         => 'sample_copied.dmp' 
);
END;
/

9 DB LINK를 이용한 파일 복사[편집]

BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object       => 'DATA_PUMP_DIR',
source_file_name              => 'sample.dmp',
destination_directory_object  => 'DATA_PUMP_DIR',
destination_file_name         => 'sample_copied.dmp', 
destination_database          => 'to_rds' 
);
END;
/