[Oracle] Pump를 이용한 데이터 이행1 (TABLE 레벨)

·2025년 9월 12일

오라클 관리

목록 보기
132/163

💡 오라클 자체 기능 중 데이터 이행 방법 3가지

  1. hwm 위로 입력하는 서브쿼리를 사용한 insert
  2. export / import dump, export / import pump ( 가장 중요한 기본기술 )
  3. csv 파일을 오라클 테이블 입력 (SQL*Loader)
  4. 오라클 골든 게이트(데이터 이행 및 데이터 동기화 툴)

💡 pump의 종류 4가지

  1. table 레벨
  2. user 레벨
  3. tablespace 레벨
  4. database 레벨

💡 Data Pump의 장점


실습1. table level 펌프 실습

1. ORA19 쪽에서 directory 를 생성합니다.
-- sys 유져에서 수행

select * from dba_directories
where directory_name='DATA_PUMP_DIR';


[oracle@ora19c ~]$ pwd
/home/oracle

[oracle@ora19c ~]$ mkdir pump_ora19

-- sys 유져에서 수행
select *
 from dba_directories
 where directory_name='DATA_PUMP_DIR';

create directory datapump_dir as '/home/oracle/pump_ora19';

select *
 from dba_directories
 where directory_name='DATAPUMP_DIR';


-- 디렉토리를 사용할 수 있는 권한을 부여
grant read, write on directory datapump_dir to scott;
grant read, write on directory datapump_dir to hr;
grant read, write on directory datapump_dir to sh;


[oracle@ora19c ~]$ expdp scott/tiger directory=datapump_dir tables=emp dumpfile=emp_pump.dmp

문제1. scott의 dept 테이블을 export pump 하세요

[oracle@ora19c ~]$ expdp scott/tiger directory=datapump_dir tables=dept dumpfile=dept_pump.dmp

.
.
.
SCOTT.SYS_EXPORT_TABLE_01에 대해 설정된 덤프 파일:
  /home/oracle/pump_ora19/dept_pump.dmp
"SCOTT"."SYS_EXPORT_TABLE_01" 작업이 금 912 11:04:22 2025 elapsed 0 00:00:11에서 성공적으로 완료됨

실습2. ora19dw 쪽에 위에서 export pump 받은 파일을 임폴트하시오

아래와 같은 큰 그림으로 export pump와 import pump를 수행합니다

         ORA19  ------------------------------------>  ora19dw
위치:   /home/oracle/pump_ora19                     /home/oracle/pump_ora19dw
디렉토리명:  datapump_dir                                ora19dw_dir
테이블 :      emp                                        emp
유져:         scott                                     jones
테이블스페이스: ts700                                    ts450

1. 먼저 ora19dw 에서 디렉토리를 생성합니다.

[oracle@ora19c ~]$ pwd
/home/oracle
[oracle@ora19c ~]$
[oracle@ora19c ~]$ mkdir pump_ora19dw
[oracle@ora19c ~]$
[oracle@ora19c ~]$


2. ora19dw 에서 ora19dw_dir 디렉토리를 생성합니다.
-- sys 유져에서 ora19dw_dir 를 생성합니다.

create directory ora19dw_dir
as '/home/oracle/pump_ora19dw';


3. jones, hr2, sh2 유져를 생성합니다.

create user jones identified by tiger;
grant dba to jones;

drop user hr2 cascade;
create  user hr2 identified by hr2;
grant dba to hr2;

create user sh2 identified by sh2;
grant dba to sh2;


4. ts450 테이블 스페이스를 생성합니다.

create tablespace ts450 
 datafile '/home/oracle/ts450.dbf' size 100m;


5. pump 파일을 카피합니다.
$ cp /home/oracle/pump_ora19/emp_pump.dmp /home/oracle/pump_ora19dw/emp_pump.dmp


6. import pump 를 수행합니다.

[oracle@ora19c ~]$ impdp jones/tiger directory=ora19dw_dir dumpfile=emp_pump.dmp remap_schema=scott:jones remap_tablespace=ts700:ts450

.
.
.
"JONES"."SYS_IMPORT_FULL_01" 작업이 금 912 11:22:51 2025 elapsed 0 00:00:15에서 성공적으로 완료됨


7. dw 쪽에서 잘 넘어왔는지 확인합니다.

select table_name, tablespace_name  
 from dba_tables
 where table_name='EMP' and owner='JONES';
 
 select count(*) from jones.emp;

문제2. dept_pump.dmp 파일도 dw 쪽에 위와 같은 방법으로 임폴트하시오

[oracle@ora19c ~]$ cp /home/oracle/pump_ora19/dept_pump.dmp /home/oracle/pump_ora19dw/dept_pump.dmp

[oracle@ora19c ~]$ impdp jones/tiger directory=ora19dw_dir dumpfile=dept_pump.dmp remap_schema=scott:jones remap_tablespace=ts700:ts450


select table_name, tablespace_name
from dba_tables
where table_name='DEPT' and owner='JONES';

select count(*) from jones.dept;

0개의 댓글