DBMS_DATAPUMP를 이용한 AWS to OCI 데이터 이관 - 1부

2023. 3. 22. 10:07·과거자료/Oracle - Admin
반응형

AWS Export 수행 절차

  • 절차 : Directory 생성 → AWS export 수행 → Oracle Directory to S3 Upload
 
친절한 아잇티에게 무엇이든 물어보세요!
글, 사진 ▶ 아잇티
 
# 사진을 제외한 제 블로그의 모든 글들은 공유 가능합니다.
# 공유 시 출처 및 댓글은 센스있게 부탁드립니다.
# 해당 포스팅 내용 외에 궁금한 점이나 추가사항은 댓글 부탁드립니다.
# 저는 친절합니다. 다가오세요... 해치지 않아요!
 
 
포스팅에 들어가며
최종 목표는 AWS Oracle to OCI Oracle 데이터 마이그레이션이다.
금번 포스팅에서는 AWS Oracle에서 DBMS_DATAPUMP 패키지를 이용한 데이터 Export 및 S3 버킷 파일 업로드까지 진행하기로 한다.
 
 Step 1. Directory 생성
먼저 export 작업에 앞서 Dump 및 log 파일이 생성될 Directory를 생성해 주어야 한다. 이 부분은 CLI를 통한 expdp를 사용할 때와 동일하나, AWS에서는 아래와 같은 명령을 통해 Directory를 생성한다.
-- Directory 생성 
call rdsadmin.rdsadmin_util.create_directory(p_directory_name=>'DATAPUMP_DIR');

-- Directory 생성 확인 및 Export 완료 시 Directory에서 Dump 파일 확인
select *
from table(rdsadmin.rds_file_util.listdir('DATAPUMP_DIR'))
order by mtime;
 
 Step 2. Export 수행

DBMS_DATAPUMP 패키지를 이용한 Export의 경우 expdp와 마찬가지로 FULL, SCHEMA, TABLESPACE, 특정 Object 등 다양한 방식으로 export가 가능하다.

그 중 가장 많이 사용되는 방식의 Full, Schema 단위 Export 예시를 알아본다.

-- Full Export
DECLARE
	w1 NUMBER; 
    
BEGIN 
	w1 := DBMS_DATAPUMP.OPEN(operation=>'EXPORT', job_mode=>'FULL', job_name=>'expdp_full');
    DBMS_DATAPUMP.ADD_FILE(handle=>w1, filename=>'exp_full_%U.dmp', directory=>'DATAPUMP_DIR', filesize=>'48G', filetype=>dbms_datapump.ku$_file_type_dump_file);
    DBMS_DATAPUMP.ADD_FILE(handle=>w1, filename=>'exp_full.log', directory=>'DATAPUMP_DIR', filetype=>dbms_datapump.ku$_file_type_log_file);
    DBMS_DATAPUMP.START_JOB(w1);
END;
/

Full export의 경우 특별할 것 없으나, 파일 사이즈의 조정을 위해 filesize 옵션을 적용하였으며, 이에 따라 dump file의 파일명 뒤에는 _%U 옵션을 적용해 주어야 한다. (그렇지 않을 경우 계속하여 덮어쓰기함.)

특정 schema 단위 export 예시의 경우 아래와 같으며, Full과 크게 다르지 않으나, metadata_filter 패키지를 호출하여 사용한다. filesize 옵션의 경우 위에서도 잠깐 설명 했지만, 하나의 dump 파일이 아닌 지정한 사이즈의 파일로 분한되어 추출된다. 기본 bytes 단위이며, 'K','G'를 붙여 killo, giga bytes 단위로도 표기가 가능하다.

-- EX1) SCOTT Export
DECLARE
    hdnl NUMBER;
BEGIN
    hdnl := DBMS_DATAPUMP.OPEN(operation=>'EXPORT', job_mode=>'TABLE', job_name=>'expdp_scott');
    DBMS_DATAPUMP.ADD_FILE(handle=>hdnl, filename=>'exp_scott.dmp', directory=>'DATAPUMP_DIR', filetype=>dbms_datapump.ku$_file_type_dump_file);
    DBMS_DATAPUMP.ADD_FILE(handle=>hdnl, filename=>'exp_scott.log', directory=>'DATAPUMP_DIR', filetype=>dbms_datapump.ku$_file_type_log_file);
    DBMS_DATAPUMP.METADATA_FILTER(handle=>hdnl, name=> 'SCHEMA_EXPR', value=>'IN (''SCOTT'')');
    DBMS_DATAPUMP.START_JOB(hdnl);
END;
/

-- EX2) SCOTT Export / File Size 조정
DECLARE
    hdnl NUMBER;
BEGIN
    hdnl := DBMS_DATAPUMP.OPEN(operation=>'EXPORT', job_mode=>'TABLE', job_name=>'expdp_scott');
    DBMS_DATAPUMP.ADD_FILE(handle=>hdnl, filename=>'exp_scott_%U.dmp', directory=>'DATAPUMP_DIR', filesize=>'1024000000', filetype=>dbms_datapump.ku$_file_type_dump_file);
    DBMS_DATAPUMP.ADD_FILE(handle=>hdnl, filename=>'exp_scott.log', directory=>'DATAPUMP_DIR', filetype=>dbms_datapump.ku$_file_type_log_file);
    DBMS_DATAPUMP.METADATA_FILTER(handle=>hdnl, name=> 'SCHEMA_EXPR', value=>'IN (''SCOTT'')');
    DBMS_DATAPUMP.START_JOB(hdnl);
END;
/
 
👍 Export가 정상 수행중인지는 어떻게 알 수 있나요?
SELECT OWNNER_NAME, JOB_NAME, OPERATION, JOB_MODE, DEGREE, STATE
	FROM DBA_DATAPUMP_JOBS
    WHERE STATE = 'EXECUTING';
업로드 성공 시 결과

 

👍 JOB이 중간에 멈췄어요.. 어떻게 삭제하나요?

Datapump를 통해 Job이 수행되는 상황(Execute, Not running 등)은 DBA_DATAPUMP_JOBS Dictionary에서 확인할 수 있다.

또한, 이와 동시에 임시 테이블이 생성이 되며, Job을 Clear하고 싶을 경우 생성된 임시 테이블을 Drop하면 Clear 된다. 아래 쿼리를 이용하여 생성된 임시 테이블을 확인 후 Drop 하도록 하자. 그러면 DBA_DATAPUMP_JOBS에 Job이 사라진 것을 확인할 수 있다.

SELECT a.status, a.object_id, a.object_type, a.owner||'."'||object_name||'"' "OWNER.OBJECT"
	FROM dba_objects a, dba_datapump_jobs b
    	WHERE a.owner=b.owner_name
        AND a.object_name=b.job_name
        AND b.job_name NOT LIKE 'BIN$%';
 

 
 
 Step 3. S3 버킷 업로드
Oracle Directory에 생성된 Dump File 및 Log File을 S3 버킷에 업로드한다. 나의 경우 Export가 정상 수행되지 않아 뭐가 문제였는지 알 수가 없는 상황에서 Log 파일을 보고싶어도 S3 버킷이라는 것 자체를 몰라.. 확인해 볼 수가 없어 작업 자체가 막혀있던 상황이었다.
S3 버킷은 AWS에서 제공하는 Simple Storage Service라서 S3로 칭하는 것 같다. 단순히 파일 저장 용도로 사용이 가능하며 그 외에  데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있다고 AWS에서는 설명한다.
일단 이 글에서는 Dump 및 Log 파일 저장 용도로 사용을 한다.
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
	p_bucket_name	=> 'bucket_name',
	p_prefix		=> 'upload_file_name',
	p_s3_prefix		=> 'oxford_language',
	p_directory_name=> 'oracle_directory_name')
AS TASK_ID FROM DUAL;
p_bucket_name : AWS S3에서 생성된 S3 이름
p_prefix : oracle directory에서 업로드 할 파일 이름
p_s3_prefix : 업로드되는 파일의 접두사
p_directory_name : Step 1에서 생성한 Oracle 디렉토리 이름
 

 

👍 Directory에 생성된 파일은 어떻게 삭제하나요?
exec utl_file.fremove('DIRECTORY_NAME','FILE_NAME');
exec utl_file.fremove('DATAPUMP_DIR','exp_full.log');
 
 
 
참고 URL

ttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html

https://dbtechbiz.tistory.com/7

 
포스팅을 마치며

CLI를 통한 exp / imp, expdp / impdp는 수 없이 진행해오며 상황에 맞는 데이터 이관을 진행했음에도 새로 접하는 AWS 환경에서는 처음 진행하는 작업이라 어려움이 꽤 있었다. 누군가에게는 도움이되는 자료가 되었으면 한다.

다음장에서는 해당 글에서 export 받은 dump 파일을 통해 OCI에 import까지하는 문서를 작성할 예정이다.
 
 
제 블로그의 내용이 도움이 되셨나요?

여러분의 공감과 댓글이 아잇티에게 큰 힘이됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼

 

반응형
저작자표시 (새창열림)

'과거자료 > Oracle - Admin' 카테고리의 다른 글

Oracle Cloud Wallet으로 SQL Developer 접속  (0) 2023.03.21
12c GRID PATCH 시 fuser 오류 해결방법  (0) 2018.07.05
Oracle 12c R2 Pluggable Database 생성, 접속, 삭제  (0) 2017.12.22
아카이브 로그 관리 방법  (0) 2017.11.28
ORACLE COLUMN 추가, 삭제, 변경  (0) 2017.11.14
'과거자료/Oracle - Admin' 카테고리의 다른 글
  • Oracle Cloud Wallet으로 SQL Developer 접속
  • 12c GRID PATCH 시 fuser 오류 해결방법
  • Oracle 12c R2 Pluggable Database 생성, 접속, 삭제
  • 아카이브 로그 관리 방법
라이의 부자로 가는길
라이의 부자로 가는길
< 돈 / 건강 / 재테크 / AI > 관심이 많은 라이
    반응형
  • 라이의 부자로 가는길
    돈이 Money
    라이의 부자로 가는길
  • 전체
    오늘
    어제
    • 분류 전체보기 (103)
      • 블로그가 Money (3)
        • WordPress (0)
        • Tistory (18)
      • 유튜브가 Money (2)
        • 유용한 사이트 (2)
      • AI가 Money (2)
        • [AI] - ChatGPT (1)
        • [AI] - 이미지 (1)
        • [AI] - 사운드 (0)
      • 돈이 Money (3)
        • 경제 한스푼 (2)
        • 재테크 (0)
        • 돈되는 정보 (1)
      • 건강이 Money (2)
        • 건강 클리닉 (2)
        • 운동 & 다이어트 (0)
      • Blah Blah (1)
        • 라이의 Blah Blah (1)
        • 찬반 Blah Blah (0)
      • 과거자료 (72)
        • OS - Linux (7)
        • OS - Windows (2)
        • Oracle - Engine (6)
        • Oracle - Admin (13)
        • Oracle - Objects (2)
        • 지름신 강림 (13)
        • 내 일상... 주절주절 (2)
        • 코인이야기 (1)
        • IT 관련 잡지식 (4)
        • 유용한 앱 & 소프트웨어 (14)
        • 애드센스 집중탐구 (4)
        • 티스토리 초대장 (4)
  • 최근 글

  • 인기 글

  • 최근 댓글

  • 블로그 메뉴

    • 지역로그
    • 태그로그
    • 방명록
  • 링크

  • 공지사항

  • 태그

    oracle 12c install
    티스토리 초대장 배부
    챗gpt
    별플레이어
    티스토리 홈화면 변경
    모니터 크기 비교
    WINDOWS ORACLE
    애드센스 수익
    oracle 12c 설치
    티스토리 초대장
    중소기업 tv
    애드센스
    웨일 브라우저 설치
    linux 7
    모모플레이어
    테이블동기화
    oracle
    오라클동기화
    티스토리
    oracle asm
  • hELLO· Designed By정상우.v4.10.3
라이의 부자로 가는길
DBMS_DATAPUMP를 이용한 AWS to OCI 데이터 이관 - 1부
상단으로

티스토리툴바