BLOG

AWS DMS를 사용하여 Oracle ASM에서 AWS로 마이그레이션하는 방법
작성일: 2018-02-28

Oracle Automatic Storage Management (ASM) 데이터베이스 프레임워크는 Oracle 데이터베이스 파일용 볼륨 관리자와 파일 시스템을 제공합니다. 단일 인스턴스 Oracle Database 및 Oracle RAC (Real Application Clusters) 구성을 지원합니다. ASM에는 데이터베이스 내부의 파일 시스템과 볼륨을 직접 관리 할 수 있는 도구가 있습니다. 이러한 도구를 사용하면 데이터베이스 관리자 (DBA)가 표준 Oracle 환경에서 친숙한 SQL 명령어로 볼륨 및 디스크를 제어 할 수 있습니다.

 

데이터베이스 프레임워크를 관리하는 것은 효과적인 비즈니스를 유지, 관리하는 기본 요소입니다. 최근까지 DBA는 데이터베이스 프레임워크를 제작하기 전에 필요한 장비 및 라이센스를 획득하기 위해 상당한 노력을 기울여야 했습니다. 오픈 소스 프레임워크 세계에서 클라우드 컴퓨팅과 혁신을 통해 많은 기업들이 여타업체의 (OLTP) 데이터베이스 엔진 및 프레임워크에서 오픈 소스 프레임워크로 이동하고 있습니다.

 

데이터베이스 프레임워크를 다른 데이터베이스 프레임워크로 이주하려면 적절한 계획과 노력이 필요합니다. 알려진 OLTP 워크로드를 옮겨야 한다는 사실에도 불구하고 이를 다른 데이터베이스 엔진으로 옮기는 것은 어려울 수 있습니다. 또한 이 과정의 각 단계마다 테스트 및 유효성 검사에 많은 시간이 걸립니다.

 

AWS SCT (스키마 변환 도구)는 최소한의 작업으로 Oracle 사전과 보조 객체를 지원되는 모든 데이터베이스 대상으로 변환하는 데 도움을 줍니다. AWS SCT는 수동 변경 또는 재 작업이 필요한 객체 및 코드를 인식하는 마이그레이션 평가 보고서를 작성합니다.

 

 

이 블로그 게시물에서는 AWS DMS (Database Migration Service)의 CDC (Change Data Capture)를 사용하여 스토리지 인프라가 Oracle ASM 일 때, Oracle 소스 엔드포인트와 작업하는 방법에 대해 설명합니다.

 

Oracle 소스 로그를 읽는 AWS DMS 방법론

 

Oracle을 소스로 사용하여 진행중인 변경 사항을 복제 할 때 AWS DMS는 로그를 읽는 두 가지 방법, Oracle LogMiner와 Oracle Binary Reader을 제공합니다.

기본적으로 AWS DMS는 변경 데이터 캡처 (CDC)를 위해 Oracle LogMiner를 사용합니다. 또는 Oracle Binary Reader를 사용할 수도 있습니다. Oracle Binary Reader는 LogMiner를 우회하여 로그를 직접 읽습니다. LogMiner 대신 Binary Reader를 AWS DMS와 함께 사용하면 다음과 같은 이점이 있습니다.

 

  • 변경량이 많은 마이그레이션의 경우 LogMiner는 Oracle 소스 데이터베이스를 호스팅하는 컴퓨터에 일부 I / O 또는 CPU에 영향을 줄 수 있습니다. Binary Reader는 I / O 또는 CPU에 영향을 줄 가능성이 적습니다.
  • 변경량이 많은 마이그레이션의 경우 Oracle LogMiner를 사용할 때보다 Binary Reader를 사용할 때 CDC 성능이 대부분 훨씬 더 좋습니다.
  • Binary Reader는 Oracle 버전 12c에서 LOBS에 대해 CDC를 지원합니다. LogMiner는 그렇지 않습니다.
  • Binary Reader는 Oracle TDE (transparent data encryption)를 사용하는 Oracle 소스와 함께 사용할 수 있습니다.
  • Binary Reader는 전체 로드 및 연속 복제 (CDC)에 대해 다음과 같은 HCC 압축 유형을 지원합니다.

 

QUERY HIGH
ARCHIVE HIGH
ARCHIVE LOW

 

  • Binary Reader는 전체 로드 마이그레이션에만 QUERY LOW 압축 유형을 지원합니다.

 

Binary Reader는 LogMiner와 비교해 볼 때 크게 향상된 성능을 제공하고 Oracle 서버의 부하를 줄입니다.

 

AWS DMS는 보관 로그가 생성되어 저장되는 파일 시스템에 임시 디렉토리를 생성하여 Binary Reader를 사용합니다. 대부분의 경우 디렉토리는 USE_DB_RECOVERY_FILE_DEST로 표시됩니다. 이 디렉토리는 마이그레이션 작업이 STOPPED 일 때는 삭제됩니다.

ASM 아키텍처에 대한 자세한 정보는 Oracle 웹 사이트의 Overview of Oracle Automatic Storage Management (ASM) 개요를 참조하십시오.

 

AWS DMS 설정
Oracle ASM 아키텍처와 달리 DMS 설정은 변경 처리를 위해 Binary Reader를 구성 할 임시 디렉토리를 만들어야 합니다. 디스크 그룹과 데이터 범위는 별도의 ASM 인스턴스에 의해 관리되므로 AWS DMS는 이 인스턴스에도 연결해야 합니다. 또한 이 ASM 인스턴스는 DMS 복제 인스턴스의 트래픽도 받아 들여야 합니다. AWS DMS는 마이그레이션을 위한 관련 디렉토리를 생성합니다.

Oracle as source for AWS DMS을 설정하는 방법에 대한 설명서에서 논의한 것처럼 다음과 같은 추가 연결 속성을 사용하여 ASM을 사용한 변경 처리를 위해 Binary Reader를 구성 할 수 있습니다.

 

useLogminerReader=N;useBfile=Y

 

앞의 속성을 Oracle ASM 소스와 함께 사용하면 테스트 연결은 성공적이지만 마이그레이션은 수행되지 않습니다. 이 경우 마이그레이션 작업 로그에 다음 오류가 표시됩니다.

 

00031609: 2016-12-05T22:21:05 [SOURCE_CAPTURE ]E: OCI error ‘ORA-12162: TNS:net service name is incorrectly specified’ [122307] OCI error. (oradcdc_redoutil.c:362)

00031609: 2016-12-05T22:21:05 [SOURCE_CAPTURE ]E: Cannot attach OCI server [120414] Failed to connect to database. (oradcdc_redoutil.c:363)

00031609: 2016-12-05T22:21:05 [SOURCE_CAPTURE ]E: Cannot connect to server ”(user ”, thread 1) [120414] Failed to connect to database. (oradcdc_io.c:380)

 

Oracle ASM 소스의 추가 연결 속성 필드는 다음과 같아야 합니다.

 

useLogminerReader=N;useBfile=Y;asm_user=<asm_username>;asm_server=<server_address>/+ASM

 

server_address 값은 관련 엔드포인트를 작성할 때 서버 이름에 제공된 값과 동일합니다.

 

또한, ASM 인스턴스로 작업 할 때 암호 필드는 마이그레이션 할 Oracle 인스턴스의 암호를 입력해야 합니다. 또한 ASM 인스턴스에 연결할 암호를 제공해야 합니다. 필드에 있는 두 개의 암호는 쉼표로 구분합니다.

 

my_oracle_pw,my_asm_pw

 

최상의 CDC 처리 속도 얻기

재실행 로그가 Oracle ASM에 저장되면 재실행 로그 액세스 방법은 종종 느립니다. 이 느린 속도는 한 번의 호출로 API 작업이 최대 32KB 블록을 읽음으로 인하여 발생됩니다. 또한 진행중인 복제를 위해 LogMiner를 사용하여 AWS DMS로 ASM을 설정하면 성능 저하 문제로 인해 대기 시간이 길어질 수 있습니다. 더하여, 연결 문제가 있거나 소스 인스턴스가 다운되면 마이그레이션이 제대로 복구되지 않는 경우도 있습니다.

 

AWS DMS를 사용하여 Oracle ASM 소스의 속도를 높이고 마이그레이션을 보다 탄탄하게 하려면 Binary Reader를 DMS 복사 기능과 함께 사용하는 것이 좋습니다. 이 방법에서 DMS는 기본적으로 ASM의 아카이브 로그를 Oracle 서버의 로컬 디렉토리로 복사합니다. 그런 다음 DMS는 Binary Reader를 사용하여 복사 된 로그를 읽을 수 있습니다.

 

유일한 요구 사항은 로컬 디렉토리가 ASM 인스턴스가 아닌 기본 Linux 파일 시스템에 있어야 한다는 것입니다.

 

DMS 사본으로 작업 할 Binary Reader 설정

다음은 DMS 복사 기능을 사용하여 Binary Reader 액세스를 설정하는 세부 단계입니다.

 

  • Oracle 시스템에서 임시 폴더를 선택합니다. Oracle이 Oracle RAC로 설정된 경우 모든 RAC 노드가 해당 폴더에 액세스 될 수 있어야 합니다. 또한 해당 폴더에는 Oracle 사용자 및 Oracle 그룹 (예: dba)이 읽기, 쓰기 및 삭제할 수 있는 권한이 있어야 합니다.
  • DMS가 Oracle에 연결하는 데 사용하는 사용자에게 다음 권한을 부여합니다. 다음에 나열된 마지막 권한은 아카이브 된 재실행 로그를 COPY_FILE 메소드를 사용하여 임시 폴더에 복사 할 수 있게 합니다.

 

CREATE SESSION
SELECT ON v_$transportable_platform
EXECUTE ON DBMS_FILE_TRANSFER

 

AWS DMS에서 Oracle 디렉토리를 만들고 관리하려면 다음 권한을 부여해야 합니다. 앞서 언급했듯이 AWS DMS는 재실행 로그를 임시 폴더에 복사하고 임시 폴더에서 삭제하기 위해 디렉토리 객체를 사용해야 합니다. 다음 권한을 부여하면 AWS DMS는 DMSREP_ 접두사가 있는 Oracle 디렉토리를 만듭니다. 이 권한을 부여하지 않으면 해당 디렉토리를 수동으로 만들어야 합니다. 디렉토리는 아카이브 된 재실행 로그 및 임시 폴더 경로를 가리켜야 합니다. 수동으로 디렉토리를 작성하는 경우 디렉토리 이름에 접두어 DMSREP_를 붙일 필요가 없습니다.

 

           CREATE ANY DIRECTORY

 

Oracle 소스 엔드포인트를 작성하는 동안 지정된 DMS 사용자가 Oracle 디렉토리를 작성한 사용자가 아닌 경우, 다음과 같은 추가 권한이 필요합니다.

 

    • READ on the Oracle directory object specified as the source directory (that is, the ASM archived redo logs path and the temporary folder if you use the BFILE method to read from the temporary folder).
    • WRITE on the directory object specified as the destination directory in the copy process (that is, the temporary folder).

 

GRANT READ, WRITE ON DIRECTORY bfile_dir TO userName;

GRANT SELECT ON DBA_FILE_GROUPS to DMS_user;
GRANT EXECUTE ON SYS.DBMS_FILE_GROUP to DMS_user;
EXECUTE DBMS_FILE_GROUP.GRANT_SYSTEM_PRIVILEGE (DBMS_FILE_GROUP.MANAGE_ANY_FILE_GROUP, ‘DMS_user’, FALSE);

 

이전 재실행 로그가 임시 폴더에 누적되지 않도록 AWS DMS는 처리 된 임시 폴더에서 재실행 로그 파일을 삭제하도록 구성되어야 합니다. 삭제 작업은 Oracle 파일 그룹과 Oracle DBMS_FILE_GROUP 패키지를 사용하여 수행됩니다.

 

Note: 앞에서 지정한 DMS_user가 소스 엔드포인트에 지정된 동일한 사용자라고 가정합니다.

 

  • AWS DMS는 ASM (즉, SYSASM 또는 SYSADM 권한)에서 온라인 재실행 로그를 읽으려면 ASM 액세스 권한이 필요합니다. ASM에서 온라인 재실행 로그를 읽는 작업은 SYSASM 또는 SYSADM 권한이 필요한 Oracle DBMS_DISKGROUP 패키지의 기능을 사용하여 수행되므로 이 권한이 필요합니다. 또한 명령 프롬프트를 열고 다음 명령문을 실행하여 ASM 계정 액세스를 검증 할 수 있습니다.

 

sqlplus asmuser/asmpassword@+asmserver as sysasm

————OR—————————–

sqlplus asmuser/asmpassword@+asmserver as sysdba

 

Note: Oracle 11g release 2 (11.2.0.2)부터는 AWS DMS 사용자에게 ASM 계정에 액세스 할 수 있는 SYSASM 권한이 부여되어야 합니다. 이전에 지원 된 버전의 경우, SYSDBA 권한 부여만으로 충분합니다.

 

  • 아카이브 된 재실행 로그 대상 식별자를 선택하십시오. 이 번호는 복제본이 읽어야 하는 아카이브 된 재실행 로그의 대상 ID입니다. 값은 v $ archived_log의 DEST_ID x 호와 같아야 합니다. 그런 다음 소스 엔드포인트에 다음 속성을 추가하십시오.

 

archivedLogDestId=nn

where nn is the destination ID for the connection string in DMS.

 

  • 추가 연결 속성 필드가 다음과 같도록 Oracle ASM 소스 엔드포인트를 설정합니다.

 

useLogminerReader=N;copyToTempFolder=/dms_temp;archivedLogDestId=nn;accessTempFolderDirectly=N;useBfile=Y;asm_user=asmuser;asm_server=asmserver.company.com/+asmserver;deleteProccessedArchiveLogs=Y

예시:

 

useLogminerReader=N;copyToTempFolder=/backups/dms;archivedLogDestId=1;accessTempFolderDirectly=N;useBfile=Y;asm_user=bjanshego;asm_server=10.61.4.41/+ASM;de

 

다른 몇 가지 중요한 점

Oracle 데이터베이스는 반드시 임시 폴더에 쓰고 삭제할 수 있어야 합니다. Oracle 원본 데이터베이스가 RAC 클러스터의 일부인 경우 임시 폴더는 Oracle Server RAC의 모든 교점에서 액세스 할 수 있는 파일 공유 위치에 있어야 합니다. 임시 폴더에 액세스하기 위해 BFILE 메소드를 선택한 경우, 네트워크 공유 폴더 일 필요는 없습니다.

 

여러 태스크가 동일한 임시 폴더를 사용하면 다른 태스크가 이미 삭제 한 재실행 로그에 액세스 해야 하는 태스크와 같은 충돌이 발생할 수 있습니다. 이러한 충돌을 방지하기 위해 한 번에 하나의 DMS 작업 만 동일한 임시 폴더에 액세스 되어야 합니다. 그러나 각 작업에 대해 동일한 루트 폴더 아래에 다른 하위 폴더를 만들 수 있습니다. 예를 들어 두 작업의 임시 폴더로 / mnt / dms를 지정하는 대신 하나의 작업에 대해서는 / temp / dms / task1을 지정하고 다른 작업에 대해서는 / temp / dms / task2를 지정할 수 있습니다.

 

임시 폴더로 작업 할 때 DMS가 처리하는 아카이브 된 재실행 로그 파일이 삭제 되었는지 확인해야 합니다. 이러한 것을 삭제하면 재실행 로그가 임시 폴더에 누적되는 것을 방지 합니다. 임시 폴더가 만들어진 파일 시스템에 충분한 공간이 있는지 확인하는 것도 중요합니다. 여러 작업이 실행중인 경우 각 작업에 자체 임시 폴더가 있으므로 작업 수만큼 필요한 디스크 공간을 늘려야 합니다.

 

마무리하며

이번 포스팅에서는 Oracle ASM을 AWS DMS 소스로 구성하고 사용하는 방법을 강조했습니다. Oracle 인프라를 마이그레이션 할 때 변경 처리 속도를 향상시키는 방법에 대해서도 논의했습니다.

 

행운과 행복이 함께하는 마이그레이션 작업이 되시길.

 

원문 URL: https://aws.amazon.com/ko/blogs/database/how-to-migrate-from-oracle-asm-to-aws-using-aws-dms/

 

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.