Skip to main content
NetApp database solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

온프레미스에서 Azure 클라우드로 데이터베이스 마이그레이션

기여자 kevin-hoke

Oracle이 단일 인스턴스 데이터베이스를 단계적으로 폐지하기로 결정한 이후, 많은 조직에서 단일 인스턴스 Oracle 데이터베이스를 멀티테넌트 컨테이너 데이터베이스로 전환했습니다. 이를 통해 PDB라는 컨테이너 데이터베이스 하위 집합을 최대 가용성 옵션으로 클라우드로 쉽게 이전할 수 있어 마이그레이션 중에 가동 중지 시간을 최소화할 수 있습니다.

그러나 Oracle 데이터베이스의 단일 인스턴스가 있는 경우 PDB 이전을 시도하기 전에 먼저 해당 인스턴스를 멀티테넌트 컨테이너 데이터베이스로 변환할 수 있습니다.

다음 섹션에서는 두 가지 시나리오 모두에서 온-프레미스 Oracle 데이터베이스를 Azure 클라우드로 마이그레이션하는 방법에 대한 세부 정보를 제공합니다.

다중 테넌트 CDB의 단일 인스턴스 비CDB를 PDB로 변환

단일 인스턴스 Oracle 데이터베이스가 있는 경우, Oracle이 조만간 단일 인스턴스 데이터베이스에 대한 지원을 중단할 예정이므로 클라우드로 마이그레이션할지 여부에 관계없이 이를 멀티테넌트 컨테이너 데이터베이스로 변환해야 합니다.

다음 절차에서는 단일 인스턴스 데이터베이스를 컨테이너 데이터베이스에 플러그형 데이터베이스 또는 PDB로 연결합니다.

  1. 단일 인스턴스 데이터베이스와 동일한 호스트에 별도의 셸 컨테이너 데이터베이스를 빌드합니다. ORACLE_HOME .

  2. 단일 인스턴스 데이터베이스를 종료하고 읽기 전용 모드로 다시 시작합니다.

  3. 실행하다 DBMS_PDB.DESCRIBE 데이터베이스 메타데이터를 생성하는 절차.

    BEGIN
      DBMS_PDB.DESCRIBE(
        pdb_descr_file => '/home/oracle/ncdb.xml');
    END;
    /
  4. 단일 인스턴스 데이터베이스를 종료합니다.

  5. 컨테이너 데이터베이스를 시작합니다.

  6. 실행하다 DBMS_PDB.CHECK_PLUG_COMPATIBILITY 비CDB가 CDB와 호환되는지 여부를 판별하는 기능입니다.

    SET SERVEROUTPUT ON
    DECLARE
      compatible CONSTANT VARCHAR2(3) :=
        CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
               pdb_descr_file => '/disk1/oracle/ncdb.xml',
               pdb_name       => 'NCDB')
        WHEN TRUE THEN 'YES'
        ELSE 'NO'
    END;
    BEGIN
      DBMS_OUTPUT.PUT_LINE(compatible);
    END;
    /

    출력 결과가 YES이면 non-CDB가 호환되는 것이므로 다음 단계로 진행할 수 있습니다.

    출력이 NO인 경우 비 CDB는 호환되지 않으므로 확인할 수 있습니다. PDB_PLUG_IN_VIOLATIONS 왜 호환되지 않는지 보려면 view를 클릭하세요. 계속 진행하기 전에 모든 위반 사항을 수정해야 합니다. 예를 들어, 버전이나 패치 불일치는 업그레이드나 opatch 유틸리티를 실행하여 해결해야 합니다. 위반 사항을 수정한 후 실행하세요. DBMS_PDB.CHECK_PLUG_COMPATIBILITY 다시 말해, 비CDB가 CDB와 호환되는지 확인하기 위함입니다.

  7. CDB가 아닌 단일 인스턴스를 플러그인합니다.

    CREATE PLUGGABLE DATABASE ncdb USING '/home/oracle/ncdb.xml'
      COPY
      FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')
    ;
    참고 호스트에 충분한 공간이 없는 경우 NOCOPY 옵션을 사용하여 PDB를 생성할 수 있습니다. 이 경우 원본 데이터 파일이 PDB에 사용되었기 때문에 PDB로 플러그인한 후에는 단일 인스턴스 비 CDB를 사용할 수 없습니다. 변환을 시작하기 전에 백업을 만들어 두면 문제가 생길 경우를 대비해 대비할 수 있습니다.
  8. 소스 단일 인스턴스 비 CDB와 대상 CDB의 버전이 다른 경우 변환 후 PDB 업그레이드를 시작합니다. 동일 버전 변환의 경우 이 단계를 건너뛸 수 있습니다.

    sqlplus / as sysdba;
    alter session set container=ncdb
    alter pluggable database open upgrade;
    exit;
    dbupgrade -c ncdb -l /home/oracle

    업그레이드 로그 파일을 검토하세요. /home/oracle 예배 규칙서.

  9. 플러그 가능한 데이터베이스를 열고, pdb 플러그인 위반 사항을 확인하고, 잘못된 객체를 다시 컴파일합니다.

    alter pluggable database ncdb open;
    alter session set container=ncdb;
    select message from pdb_plug_in_violations where type like '%ERR%' and status <> 'RESOLVED';
    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -c 'ncdb' -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
  10. 실행하다 noncdb_to_pdb.sql 데이터 사전을 업데이트합니다.

    sqlplus / as sysdba
    alter session set container=ncdb;
    @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql;

    컨테이너 DB를 종료하고 다시 시작합니다. ncdb가 제한 모드에서 해제되었습니다.

PDB 재배치를 통해 온프레미스 Oracle 데이터베이스를 Azure로 마이그레이션

최대 가용성 옵션을 사용한 Oracle PDB 재배치는 PDB 핫 클론 기술을 사용하여 PDB가 대상에 복사되는 동안에도 소스 PDB를 사용할 수 있도록 합니다. 전환 시 사용자 연결은 자동으로 대상 PDB로 리디렉션됩니다. 따라서 PDB 크기에 관계없이 가동 중지 시간이 최소화됩니다. NetApp 마이그레이션 절차를 자동화하는 Ansible 기반 툴킷을 제공합니다.

  1. 동일한 버전 및 패치 수준으로 Azure VM에서 Azure 퍼블릭 클라우드에 CDB를 만듭니다.

  2. Ansible 컨트롤러에서 자동화 툴킷의 사본을 복제합니다.

    git clone https://github.com/NetApp-Automation/na_ora_aws_migration.git
  3. README 파일의 지침을 읽으세요.

  4. 소스 및 대상 Oracle 서버 모두에 대한 Ansible 호스트 변수 파일을 구성하고 이름 확인을 위해 DB 서버 호스트의 구성 파일을 구성합니다.

  5. Ansible 컨트롤러에 Ansible 컨트롤러 필수 구성 요소를 설치합니다.

    ansible-playbook -i hosts requirements.yml
    ansible-galaxy collection install -r collections/requirements.yml --force
  6. 온프레미스 서버에 대해 사전 마이그레이션 작업을 실행합니다.

    ansible-playbook -i hosts ora_pdb_relocate.yml -u admin -k -K -t ora_pdb_relo_onprem
    참고 관리자 사용자는 sudo 권한이 있는 온프레미스 Oracle 서버 호스트의 관리 사용자입니다. 관리자 사용자는 비밀번호로 인증됩니다.
  7. 온-프레미스에서 대상 Azure Oracle 호스트로 Oracle PDB 이전을 실행합니다.

    ansible-playbook -i hosts ora_pdb_relocate.yml -u azureuser --private-key db1.pem -t ora_pdb_relo_primary
    참고 Ansible 컨트롤러는 온프레미스 또는 Azure 클라우드에 위치할 수 있습니다. 컨트롤러는 온프레미스 Oracle 서버 호스트와 Azure Oracle VM 호스트에 연결해야 합니다. 온-프레미스 Oracle 서버 호스트와 Azure Oracle VM 호스트 사이에서 Oracle 데이터베이스 포트(예: 1521)가 열려 있습니다.

추가 Oracle 데이터베이스 마이그레이션 옵션

추가 마이그레이션 옵션은 Microsoft 설명서를 참조하세요."Oracle 데이터베이스 마이그레이션 결정 프로세스" .