기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Oracle Data Pump를 사용하여 온프레미스 Oracle 데이터베이스를 Amazon RDS for Oracle로 마이그레이션
작성자: Mohan Annam(AWS) 및 Brian motzer(AWS)
요약
이 패턴은 Oracle Data Pump를 사용하여 Oracle 데이터베이스를 온프레미스 데이터 센터에서 Amazon Relational Database Service(RDS) for Oracle DB 인스턴스로 마이그레이션하는 방법을 설명합니다.
패턴에는 소스 데이터베이스에서 데이터 덤프 파일을 생성하고 Amazon Simple Storage Service(S3) 버킷에 파일을 저장한 후 Amazon RDS for Oracle DB 인스턴스로 데이터를 복원하는 작업이 포함됩니다. 이 패턴은 마이그레이션을 하기 위해 AWS Database Migration Service(AWS DMS)를 사용할 때 제한이 발생하는 경우 유용합니다.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정
AWS Identity and Access Management(IAM)에서 역할을 생성하고 Amazon S3 멀티파트 업로드에 필요한 권한
소스 데이터베이스에서 데이터를 내보내는 데 필요한 권한
AWS Command Line Interface(AWS CLI) 설치 및 구성됨
제품 버전
아키텍처
소스 기술 스택
대상 기술 스택
소스 및 대상 아키텍처
서비스
기타 도구
Oracle Data Pump를 사용하면 한 데이터베이스에서 다른 데이터베이스로 데이터와 메타데이터를 빠른 속도로 이동할 수 있습니다. 이 패턴에서는 Oracle Data Pump를 사용하여 데이터 덤프(.dmp) 파일을 Oracle 서버로 내보내고 이 파일을 Amazon RDS for Oracle로 가져옵니다. 자세한 내용은 Amazon RDS 설명서의 Amazon RDS 기반 Oracle로 데이터 가져오기를 참조하십시오.
Oracle SQL Developer는 기존 배포와 클라우드 기반 배포 모두에서 Oracle 데이터베이스의 개발 및 관리를 간소화하는 통합 개발 환경입니다. 온프레미스 Oracle 데이터베이스 및 Amazon RDS for Oracle과 상호 작용하여 데이터를 내보내고 가져오는 데 필요한 SQL 명령을 실행합니다.
에픽
작업 | 설명 | 필요한 기술 |
---|
버킷을 생성합니다. | S3 버킷을 만들려면 AWS 설명서에 있는 지침을 따르십시오. | AWS 시스템 관리자 |
작업 | 설명 | 필요한 기술 |
---|
IAM 권한을 구성합니다. | 권한을 구성하려면 AWS 설명서의 지침을 따르십시오. | AWS 시스템 관리자 |
작업 | 설명 | 필요한 기술 |
---|
대상 Amazon RDS for Oracle DB 인스턴스를 생성합니다. | Amazon RDS for Oracle 인스턴스를 생성하려면 AWS 설명서의 지침을 따르십시오. | AWS 시스템 관리자 |
역할을 DB 인스턴스와 연결합니다. | 역할을 인스턴스와 연결하려면 AWS 설명서의 지침을 따르십시오. | DBA |
작업 | 설명 | 필요한 기술 |
---|
사용자를 생성합니다. | Oracle SQL Developer 또는 SQL*Plus에서 대상 Amazon RDS for Oracle 데이터베이스에 연결하고 다음 SQL 명령을 실행하여 스키마를 가져올 사용자를 생성합니다. create user SAMPLE_SCHEMA identified by <PASSWORD>;
grant create session, resource to <USER NAME>;
alter user <USER NAME> quota 100M on users;
| DBA |
작업 | 설명 | 필요한 기술 |
---|
데이터 덤프 파일을 생성합니다. | SAMPLE_SCHEMA 사용자를 내보낼 DATA_PUMP_DIR 디렉터리에 sample.dmp 로 이름이 지정된 덤프 파일을 만들려면 다음 스크립트를 사용합니다.
DECLARE
hdnl NUMBER;
BEGIN
hdnl := dbms_datapump.open(operation => 'EXPORT',
job_mode => 'SCHEMA',
job_name => NULL);
dbms_datapump.add_file( handle => hdnl,
filename => 'sample.dmp',
directory => 'DATA_PUMP_DIR',
filetype => dbms_datapump.ku$_file_type_dump_file);
dbms_datapump.add_file(handle => hdnl,
filename => 'export.log',
directory => 'DATA_PUMP_DIR',
filetype => dbms_datapump.ku$_file_type_log_file);
dbms_datapump.metadata_filter(hdnl, 'SCHEMA_EXPR', 'IN (''SAMPLE_SCHEMA'')');
dbms_datapump.start_job(hdnl);
END;
/
로컬 DATA_PUMP_DIR 디렉터리에 있는 export.log 파일을 검토하여 내보내기 세부 정보를 검토하십시오. | DBA |
작업 | 설명 | 필요한 기술 |
---|
소스에서 S3 버킷으로 데이터 덤프 파일을 업로드합니다. | Amazon CLI를 사용하여 다음 명령을 실행합니다. aws s3 cp sample.dmp s3://<bucket_created_epic_1>/
| DBA |
작업 | 설명 | 필요한 기술 |
---|
Amazon RDS에 데이터 덤프 파일을 다운로드하십시오. | 덤프 파일을 S3 버킷 sample.dmp 에서 Amazon RDS for Oracle 데이터베이스로 복사하려면 다음 SQL 명령을 실행합니다. 이 예시에서는 sample.dmp 파일이 S3 버킷 my-s3-integration1 에서 Oracle 디렉터리 DATA_PUMP_DIR 로 다운로드됩니다. 데이터베이스와 내보내기 파일을 모두 수용할 수 있을 만큼 RDS 인스턴스에 충분한 디스크 스페이스가 할당되었는지 확인하십시오. -- If you want to download all the files in the S3 bucket remove the p_s3_prefix line.
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
p_bucket_name => 'my-s3-integration',
p_s3_prefix => 'sample.dmp',
p_directory_name => 'DATA_PUMP_DIR')
AS TASK_ID FROM DUAL;
이전 명령은 작업 ID를 출력합니다. 작업 ID의 데이터를 검토하여 다운로드 상태를 검토하려면 다음 명령을 실행합니다. SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));
DATA_PUMP_DIR 디렉터리에서 파일을 보려면 다음 명령을 실행합니다.
SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp
FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
| AWS 시스템 관리자 |
작업 | 설명 | 필요한 기술 |
---|
스키마와 데이터를 Amazon RDS로 복원합니다. | 덤프 파일을 sample_schema 데이터베이스 스키마로 가져오려면, SQL Developer 또는 SQL*Plus에서 다음 SQL 명령을 실행합니다. DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'import.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''SAMPLE_SCHEMA'')');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/
가져오기에서 로그 파일을 보려면 다음 명령을 실행합니다. SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','import.log'));
| DBA |
작업 | 설명 | 필요한 기술 |
---|
내보내기 파일을 나열하고 정리합니다. | DATA_PUMP_DIR 디렉터리의 내보내기 파일을 나열하고 제거한 뒤, 다음 명령을 실행합니다.
-- List the files
SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
-- Remove the files
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample.dmp');
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','import.log');
| AWS 시스템 관리자 |
관련 리소스