Azure Linux VM에서 Azure Backup을 사용하여 Oracle Database 백업 및 복구

적용 대상: ✔️ Linux VM

이 문서에서는 Azure Backup을 사용하여 Oracle Database 파일 및 Oracle 빠른 복구 영역이 있는 VM(가상 머신) 디스크의 디스크 스냅샷을 만드는 방법을 보여줍니다. Azure Backup을 사용하면 백업으로 적합하고 Recovery Services 자격 증명 모음에 저장되는 전체 디스크 스냅샷을 만들 수 있습니다.

또한 Azure Backup은 데이터를 복원하기 위한 추가 수정이 필요 없는 애플리케이션 일치 백업을 제공합니다. 애플리케이션 일치 백업은 파일 시스템 및 Oracle ASM(Automatic Storage Management) 데이터베이스 모두에서 작동합니다.

애플리케이션 일치 데이터를 복원하면 복원 시간이 감소하므로 신속히 실행 상태로 복귀할 수 있습니다. Oracle Database 복구는 복원 후에도 계속 필요합니다. 별도의 Azure 파일 공유에 캡처하고 저장한 Oracle 보관된 다시 실행 로그 파일을 사용하면 용이하게 복구할 수 있습니다.

이 문서에서는 다음 작업을 안내합니다.

  • 애플리케이션 일치 백업을 사용하여 데이터베이스 백업
  • 복구 지점에서 데이터베이스 복원 및 복구
  • 복구 지점에서 VM 복원

사전 요구 사항

환경 준비

환경을 준비하려면 다음 단계를 완료합니다.

  1. VM에 연결.
  2. Azure Files Storage 설정
  3. 데이터베이스 준비

VM에 연결

  1. VM을 사용하여 SSH(Secure Shell) 세션을 만들려면 다음 명령을 사용합니다. <publicIpAddress>를 VM의 공용 주소 값으로 바꿉니다.

    ssh azureuser@<publicIpAddress>
    
  2. 루트 사용자로 전환합니다.

    sudo su -
    
  3. oracle 사용자를 /etc/sudoers 파일에 추가합니다.

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    

Oracle 보관된 다시 실행 로그 파일용 Azure Files 스토리지 설정

Oracle Database 인스턴스의 보관된 다시 실행 로그 파일은 데이터베이스 복구에서 중요한 역할을 합니다. 이러한 파일은 과거에 만든 데이터베이스 스냅샷에서 롤포워드하는 데 필요한, 커밋된 트랜잭션을 저장합니다.

데이터베이스는 ARCHIVELOG 모드인 동안 온라인 다시 실행 로그 파일이 가득 차서 전환되면 파일 내용을 보관합니다. 데이터베이스가 손실되었을 때 특정 시점 복원을 수행하려면 백업과 함께 다시 실행 로그 파일이 필요합니다.

Oracle은 다시 실행 로그 파일을 다른 위치에 보관하는 기능을 제공합니다. 호스트 스토리지와 분리되고 독립적인 스냅샷으로 보호되도록 대상 중 하나 이상이 원격 스토리지에 있는 것이 산업 모범 사례입니다. Azure Files는 이러한 요구 사항을 충족합니다.

Azure 파일 공유는 SMB(서버 메시지 블록) 또는 NFS(네트워크 파일 시스템) 프로토콜을 사용하여 Linux 또는 Windows VM에 일반 파일 시스템 구성 요소로 연결할 수 있는 스토리지입니다. Linux에서 보관 로그 스토리지로 사용할 Azure 파일 공유를 설정하려면(SMB 3.0 프로토콜을 사용하여) Linux에서 SMB Azure 파일 공유 탑재를 참조하세요. 설정을 완료했으면 이 가이드로 돌아와서 나머지 단계를 모두 완료합니다.

데이터베이스 준비

이 프로세스에서는 Azure VM에서 Oracle Database 인스턴스 만들기를 수행한 것으로 가정합니다. 결과적으로 다음이 수행됩니다.

  • oratest1이라는 Oracle 인스턴스가 vmoracle19c라는 VM에서 실행되고 있습니다.
  • 표준 Oracle 구성 파일 /etc/oratab의 종속성과 함께 표준 Oracle oraenv 스크립트를 사용하여 셸 세션에서 환경 변수를 설정합니다.

VM의 각 데이터베이스에서 다음 단계를 수행합니다.

  1. 다음과 같이 oracle 사용자로 전환합니다.

     sudo su - oracle
    
  2. oraenv 스크립트를 실행하여 환경 변수 ORACLE_SID를 설정합니다. 그러면 ORACLE_SID 이름을 입력하라는 메시지가 표시됩니다.

    . oraenv
    
  3. Azure 파일 공유를 데이터베이스 보관 로그 파일의 또 다른 대상으로 추가합니다.

    이 단계에서는 Linux VM에서 Azure 파일 공유를 구성하고 탑재한 것으로 가정합니다. VM에 설치된 데이터베이스마다 하위 디렉터리를 만들고 SID(데이터베이스 보안 식별자)의 이름을 따서 명명합니다.

    이 예제에서 탑재 지점 이름은 /backup이고 SID는 oratest1입니다. 즉 하위 디렉터리 /backup/oratest1을 만들고 소유권을 oracle 사용자로 변경합니다. 탑재 지점 이름과 데이터베이스 SID를 /backup/SID로 바꿉니다.

    sudo mkdir /backup/oratest1
    sudo chown oracle:oinstall /backup/oratest1
    
  4. 데이터베이스에 커넥트:

    sqlplus / as sysdba
    
  5. 데이터베이스가 아직 실행되고 있지 않은 경우 다음을 시작합니다.

    SQL> startup
    
  6. 데이터베이스의 첫 번째 보관 로그 대상을 앞에서 만든 파일 공유 디렉터리로 설정합니다.

    SQL> alter system set log_archive_dest_1='LOCATION=/backup/oratest1' scope=both;
    
  7. 데이터베이스의 RPO(복구 지점 목표)를 정의합니다.

    일관된 RPO를 얻으려면 온라인 다시 실행 로그 파일이 보관되는 빈도를 고려해야 합니다. 다음은 빈도를 제어하는 요소입니다.

    • 온라인 다시 실행 로그 파일의 크기. 온라인 로그 파일이 가득 차면 전환되고 보관됩니다. 온라인 로그 파일이 클수록 채우는 시간이 더 오래 걸립니다. 시간이 늘어나면 보관 생성 빈도가 감소합니다.
    • ARCHIVE_LAG_TARGET 매개 변수의 설정. 이 설정에 따라 현재 온라인 로그 파일을 전환하고 보관해야 하기 전까지 허용되는 최대 시간(초)이 결정됩니다.

    수반되는 검사점 작업과 함께 전환 및 보관 빈도를 최소화하기 위해 일반적으로 Oracle 온라인 다시 실행 로그 파일의 크기가 큽니다(예: 1024M, 4096M, 8192M 등). 사용량이 많은 데이터베이스 환경에서 여전히 로그가 몇 초 또는 몇 분마다 전환하고 보관됩니다. 사용량이 적은 데이터베이스 환경에서는 가장 최근 트랜잭션이 보관될 때까지 로그가 몇 시간 또는 며칠 동안 지속되기도 하며, 이 경우 보관 빈도가 극적으로 감소합니다.

    일관된 RPO를 보장하도록 ARCHIVE_LAG_TARGET을 설정하는 것이 좋습니다. ARCHIVE_LAG_TARGET 값을 5분(300초)으로 설정하는 것이 좋습니다. 그러면 데이터베이스 복구 작업을 오류 시점으로부터 5분 이내에 완료할 수 있습니다.

    ARCHIVE_LAG_TARGET을 설정하려면 다음 명령을 실행합니다.

    SQL> alter system set archive_lag_target=300 scope=both;
    

    RPO가 0인 Azure에서 고가용성 Oracle Database 인스턴스를 배포하는 방법을 자세히 알아보려면 Oracle Database의 참조 아키텍처를 참조하세요.

  8. 온라인 백업을 사용하도록 설정하려면 데이터베이스가 보관 로그 모드에 있는지 확인합니다.

    먼저 로그 보관 상태 확인합니다.

    SQL> SELECT log_mode FROM v$database;
    
    LOG_MODE
    ------------
    NOARCHIVELOG
    

    NOARCHIVELOG 모드인 경우 다음 명령을 실행합니다.

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  9. 백업 및 복원 작업을 테스트하는 테이블을 만듭니다.

    SQL> create user scott identified by tiger quota 100M on users;
    SQL> grant create session, create table to scott;
    SQL> connect scott/tiger
    SQL> create table scott_table(col1 number, col2 varchar2(50));
    SQL> insert into scott_table VALUES(1,'Line 1');
    SQL> commit;
    SQL> quit
    

Azure Backup을 사용하여 데이터 백업

Azure Backup 서비스는 데이터를 백업하고 Microsoft Azure 클라우드에서 데이터를 복구할 수 있는 솔루션을 제공합니다. Azure Backup은 실수로 데이터가 삭제되지 않도록 방지하기 위해 독립적이고 격리된 백업을 제공합니다. 백업은 복구 지점 관리 기능이 기본 제공되는 Recovery Services 자격 증명 모음에 저장됩니다.

이 섹션에서는 Azure Backup을 사용하여 실행 중인 VM 및 Oracle Database 인스턴스의 애플리케이션 일치 스냅샷을 만듭니다. Azure Backup에서 VM 디스크의 스냅샷을 만드는 동안 트랜잭션에서 일관된 온라인 백업을 수행할 수 있도록 데이터베이스가 백업 모드로 전환됩니다. 스냅샷은 스토리지의 전체 복사본이며 증분 또는 쓰기 시 복사 스냅샷 아닙니다. 스냅샷은 데이터베이스를 복원하는 효과적인 매체입니다.

Azure Backup 애플리케이션 일치 스냅샷을 사용하면 데이터베이스 크기에 상관없이 빠르게 스냅샷을 만들 수 있다는 장점이 있습니다. 스냅샷이 Recovery Services 자격 증명 모음으로 전송될 때까지 기다리지 않고도 스냅샷을 만드는 즉시 복원 작업에 사용할 수 있습니다.

Azure Backup을 사용하여 데이터베이스를 백업하려면 다음 단계를 완료합니다.

  1. Azure Backup 프레임워크를 이해합니다.
  2. 애플리케이션 일치 백업을 위한 환경을 준비합니다.
  3. 애플리케이션 일치 백업을 설정합니다.
  4. VM의 애플리케이션 일치 백업을 트리거합니다.

Azure Backup 프레임워크 이해

Azure Backup 서비스는 다양한 애플리케이션의 Windows 및 Linux VM을 백업하는 동안 애플리케이션 일관성을 달성할 수 있는 프레임워크를 제공합니다. 이 프레임워크는 디스크의 스냅샷을 만들기 전에 사전 스크립트를 호출하여 애플리케이션을 고정하는 작업이 수반됩니다. 스냅샷이 완료된 후에는 사후 스크립트를 호출하여 애플리케이션을 고정 해제합니다.

Microsoft는 Azure Backup 서비스가 고객이 선택한 애플리케이션의 패키징된 사전 스크립트 및 사후 스크립트를 제공하도록 이 프레임워크를 향상했습니다. 이러한 사전 스크립트 및 사후 스크립트가 이미 Linux 이미지에 로드되어 있으므로 따로 설치할 것이 없습니다. 애플리케이션 이름을 지정하기만 하면 됩니다. 그러면 Azure Backup이 관련 스크립트를 자동으로 호출합니다. 패키징된 사전 스크립트 및 사후 스크립트를 Microsoft가 관리하므로 사용자는 스크립트의 지원, 소유권 및 유효성을 믿고 안심할 수 있습니다.

현재 향상된 프레임워크를 지원하는 애플리케이션은 Oracle 12.x 이상 및 MySQL입니다. 자세한 내용은 관리되는 Azure VM 백업의 지원 매트릭스를 참조하세요.

고객은 12.x 미만 데이터베이스에서 사용할 자체적인 Azure Backup 스크립트를 작성할 수 있습니다. 스크립트 예제는 GitHub에 있습니다.

백업을 수행할 때마다 향상된 프레임워크는 VM에 설치된 모든 Oracle Database 인스턴스에서 사전 스크립트 및 사후 스크립트를 실행합니다. workload.conf 파일의 configuration_path 매개 변수는 /etc/oratab 파일(또는 oratab 구문을 따르는 사용자 정의 파일)의 위치를 가리킵니다. 자세한 내용은 애플리케이션 일치 백업 설정을 참조하세요.

Azure Backup은 configuration_path가 가리키는 파일에 나열된 각 데이터베이스에 대한 사전 스크립트 및 사후 스크립트를 실행합니다. #으로 시작하는 줄(주석으로 처리) 또는 +ASM으로 시작하는 줄(Oracle ASM 인스턴스)은 예외입니다.

Azure Backup 향상된 프레임워크는 ARCHIVELOG 모드에서 작동하는 Oracle Database 인스턴스의 온라인 백업을 수행합니다. 사전 스크립트 및 사후 스크립트는 ALTER DATABASE BEGINEND BACKUP 명령을 사용하여 애플리케이션 일관성을 달성합니다.

데이터베이스 백업이 일관성을 유지하려면 스냅샷을 시작하기 전에 NOARCHIVELOG 모드의 데이터베이스를 완전히 종료해야 합니다.

애플리케이션 일치 백업을 위한 환경 준비

Oracle Database는 최소 권한을 사용하여 의무를 분리하기 위해 작업 역할 분리를 사용합니다. Oracle Database는 별도의 OS(운영 체제) 그룹을 별도의 데이터베이스 관리 역할과 연결합니다. 그러면 OS 그룹의 구성원에 따라 사용자에게 다른 데이터베이스 권한이 부여될 수 있습니다.

SYSBACKUP 데이터베이스 역할(제네릭 이름 OSBACKUPDBA)은 데이터베이스에서 백업 작업을 수행할 수 있는 제한된 권한을 제공합니다. Azure Backup에는 이 역할이 필요합니다.

Oracle을 설치하는 동안 SYSBACKUP 역할을 연결할 OS 그룹 이름으로 backupdba를 사용하는 것이 좋습니다. 원하는 다른 이름을 사용해도 되지만, 이 경우 Oracle SYSBACKUP 역할을 나타내는 OS 그룹의 이름을 먼저 확인해야 합니다.

  1. 다음과 같이 oracle 사용자로 전환합니다.

    sudo su - oracle
    
  2. Oracle 환경을 설정합니다.

    export ORACLE_SID=oratest1
    export ORAENV_ASK=NO
    . oraenv
    
  3. Oracle SYSBACKUP 역할을 나타내는 OS 그룹의 이름을 확인합니다.

    grep "define SS_BKP" $ORACLE_HOME/rdbms/lib/config.c
    

    출력은 다음 예제와 유사합니다.

    #define SS_BKP_GRP "backupdba"
    

    출력에서 큰 따옴표로 묶인 값은 Oracle SYSBACKUP 역할이 외부에서 인증되는 Linux OS 그룹의 이름입니다. 이 예에서는 backupdba입니다. 실제 값을 적어 둡니다.

  4. 다음 명령을 실행하여 OS 그룹이 있는지 확인합니다. <group name>을 이전 명령에서 반환된 값(따옴표 없이)으로 바꿉니다.

    grep <group name> /etc/group
    

    출력은 다음 예제와 유사합니다.

    backupdba:x:54324:oracle
    

    Important

    출력이 3단계에서 검색한 Oracle OS 그룹 값과 일치하지 않으면 다음 명령을 사용하여 Oracle SYSBACKUP 역할을 나타내는 OS 그룹을 만듭니다. <group name>을 3단계에서 검색한 그룹 이름으로 바꿉니다.

    sudo groupadd <group name>
    
  5. 이전 단계에서 확인하거나 만든 OS 그룹에 속하는 새 백업 사용자 azbackup을 만듭니다. <group name>을 확인된 그룹 이름으로 바꿉니다. 또한 ASM 디스크를 열 수 있도록 사용자가 oinstall 그룹에 추가됩니다.

    sudo useradd -g <group name> -G oinstall azbackup
    
  6. 새 백업 사용자에 대한 외부 인증을 설정합니다.

    백업 사용자 azbackup은 암호로 인한 문제가 발생하지 않도록 외부 인증을 사용하여 데이터베이스에 액세스할 수 있어야 합니다. 이렇게 만들려면 azbackup을 통해 외부에서 인증하는 데이터베이스 사용자를 만들어야 합니다. 데이터베이스가 사용자 이름에 사용하는 접두사를 찾아야 합니다.

    VM에 설치된 데이터베이스마다 다음 단계를 수행합니다.

    1. SQL Plus를 사용하여 데이터베이스에 로그인한 다음, 외부 인증의 기본 설정을 확인합니다.

      sqlplus / as sysdba
      SQL> show parameter os_authent_prefix
      SQL> show parameter remote_os_authent
      

      데이터베이스 사용자 이름 접두사가 ops$인 다음 예제와 비슷한 출력이 표시될 것입니다.

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      os_authent_prefix                    string      ops$
      remote_os_authent                    boolean     FALSE
      
    2. azbackup 사용자의 외부 인증을 위해 ops$azbackup이라는 데이터베이스 사용자를 만들고 SYSBACKUP 권한을 부여합니다.

      SQL> CREATE USER ops$azbackup IDENTIFIED EXTERNALLY;
      SQL> GRANT CREATE SESSION, ALTER SESSION, SYSBACKUP TO ops$azbackup;
      
  7. GRANT 문을 실행하면 ORA-46953: The password file is not in the 12.2 format 오류가 발생하는 경우 다음 단계에 따라 orapwd 파일을 12.2 형식으로 마이그레이션합니다. VM의 Oracle Database 인스턴스마다 다음 단계를 수행합니다.

    1. SQL Plus를 종료합니다.

    2. 이전 형식의 암호 파일을 새 이름으로 이동합니다.

    3. 암호 파일을 마이그레이션합니다.

    4. 이전 파일을 제거합니다.

    5. 다음 명령을 실행합니다.

      mv $ORACLE_HOME/dbs/orapworatest1 $ORACLE_HOME/dbs/orapworatest1.tmp
      orapwd file=$ORACLE_HOME/dbs/orapworatest1 input_file=$ORACLE_HOME/dbs/orapworatest1.tmp
      rm $ORACLE_HOME/dbs/orapworatest1.tmp
      
    6. SQL Plus에서 GRANT 작업을 다시 실행합니다.

  8. 백업 메시지를 데이터베이스 경고 로그에 기록하는 저장 프로시저를 만듭니다. VM에 설치된 데이터베이스마다 다음 코드를 실행합니다.

    sqlplus / as sysdba
    SQL> GRANT EXECUTE ON DBMS_SYSTEM TO SYSBACKUP;
    SQL> CREATE PROCEDURE sysbackup.azmessage(in_msg IN VARCHAR2)
    AS
      v_timestamp     VARCHAR2(32);
    BEGIN
      SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')
      INTO v_timestamp FROM DUAL;
      DBMS_OUTPUT.PUT_LINE(v_timestamp || ' - ' || in_msg);
      SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.ALERT_FILE, in_msg);
    END azmessage;
    /
    SQL> SHOW ERRORS
    SQL> QUIT
    

애플리케이션 일치 백업 설정

  1. 루트 사용자로 전환합니다.

    sudo su -
    
  2. /etc/azure 폴더를 확인합니다. 이 폴더가 없으면 다음과 같이 애플리케이션 일치 백업 작업 디렉터리를 만듭니다.

    if [ ! -d "/etc/azure" ]; then
       mkdir /etc/azure
    fi
    
  3. 폴더 안에 workload.conf 파일이 있는지 확인합니다. 없으면 /etc/azure 디렉터리에 이 파일을 만들고 다음 콘텐츠를 파일에 제공합니다. 주석은 [workload]로 시작해야 합니다. 파일이 이미 있으면 다음 내용과 일치하도록 필드를 편집합니다. 파일이 없으면 다음 명령을 사용하여 파일을 만들고 내용을 채웁니다.

    echo "[workload]
    workload_name = oracle
    configuration_path = /etc/oratab
    timeout = 90
    linux_user = azbackup" > /etc/azure/workload.conf
    

    workload.conf 파일은 다음 형식을 사용합니다.

    • workload_name 매개 변수는 데이터베이스 워크로드 형식을 나타냅니다. 이 예에서는 이 매개 변수를 Oracle로 설정하면 Azure Backup이 Oracle Database 인스턴스에 대한 올바른 사전 스크립트 및 사후 스크립트(일관성 명령)를 실행할 수 있습니다.
    • timeout 매개 변수는 각 데이터베이스가 스토리지 스냅샷을 완료해야 하는 최대 시간(초)을 나타냅니다.
    • linux_user 매개 변수는 Azure Backup이 데이터베이스 중지 작업을 실행하는 데 사용하는 Linux 사용자 계정을 나타냅니다. 이전에 이 사용자를 azbackup만들었습니다.
    • configuration_path 매개 변수는 VM에 있는 텍스트 파일의 절대 경로 이름을 나타냅니다. 각 줄에는 VM에서 실행되는 데이터베이스 인스턴스가 나열됩니다. 일반적으로 데이터베이스 설치 중에 Oracle이 생성하는 /etc/oratab 파일이지만, 사용자가 선택한 이름의 파일일 수도 있습니다. 다음 형식 규칙을 따라야 합니다.
      • 파일은 텍스트 파일입니다. 각 필드가 콜론 문자(:)로 구분됩니다.
      • 각 줄의 첫 번째 필드는 ORACLE_SID의 이름입니다.
      • 각 줄의 두 번째 필드는 해당 ORACLE_SID 인스턴스에 대한 ORACLE_HOME의 절대 경로 이름입니다.
      • 처음 두 필드 뒤에 있는 모든 텍스트는 무시됩니다.
      • 선이 파운드 기호(#)로 시작하는 경우 전체 줄이 주석으로 무시됩니다.
      • 첫 번째 필드의 값이 Oracle ASM 인스턴스를 나타내는 +ASM이면 첫 번째 필드가 무시됩니다.

VM의 애플리케이션 일치 백업 트리거

  1. Azure Portal에서 rg-oracle 리소스 그룹으로 이동하여 vmoracle19c 가상 머신을 선택합니다.

  2. 백업 창에서 다음을 수행합니다.

    1. Recovery Services 자격 증명 모음에서 새로 만들기를 선택합니다.
    2. 자격 증명 모음의 이름으로 myVault를 사용합니다.
    3. 리소스 그룹으로 rg-oracle을 선택합니다.
    4. 백업 정책 선택의 경우 (새로운) DailyPolicy를 사용합니다. 백업 빈도 또는 보존 범위를 변경하려면 새 정책 만들기를 대신 선택합니다.

    Screenshot that shows the pane for configuring a new Recovery Services vault.

  3. 백업 사용을 선택합니다.

    예정된 시간이 만료될 때까지 백업 프로세스가 시작되지 않습니다. 즉시 백업을 시작하려면 다음 단계를 완료합니다.

  4. 리소스 그룹 창에서, 새로 만든 Recovery Services 자격 증명 모음 myVault를 선택합니다. 페이지를 새로 고쳐야 표시될 수도 있습니다.

  5. myVault - 백업 항목 창의 백업 항목 수에서 백업 항목 수를 선택합니다.

    Screenshot that shows details for a Recovery Services vault.

  6. 백업 항목(Azure 가상 머신) 창에서 줄임표(...) 단추를 선택한 다음, 지금 백업을 선택합니다.

    Screenshot that shows the command for backing up Recovery Services vaults now.

  7. 기본 다음까지 백업 보존 값을 적용하고, 확인을 선택합니다. 백업 프로세스가 완료되기를 기다립니다.

  8. 백업 작업의 상태를 보려면 백업 작업을 선택합니다.

    Screenshot that shows the pane that lists backup jobs for a Recovery Services vault.

    상태 세부 정보를 보고 싶은 백업 작업을 선택합니다.

    Screenshot that shows detailed status information for a backup job.

    스냅샷을 실행하는 데에는 몇 초밖에 걸리지 않지만, 스냅샷을 자격 증명 모음으로 전송하는 데에는 다소 시간이 걸릴 수 있습니다. 전송이 완료될 때까지는 백업 작업이 완료되지 않습니다.

  9. 애플리케이션 일치 백업의 경우 /var/log/azure/Microsoft.Azure.RecoveryServices.VMSnapshotLinux/extension.log에서 로그 파일의 오류를 해결합니다.

VM 복원

전체 VM을 복원한다는 것은 VM 및 VM과 연결된 디스크를 선택한 복원 지점의 새 VM으로 복원하는 것입니다. 이 작업은 VM에서 실행되는 모든 데이터베이스까지 복원합니다. 그 후, 각 데이터베이스를 복구해야 합니다.

전체 VM을 복원하려면 다음 단계를 완료합니다.

  1. VM을 중지 후 삭제합니다.
  2. VM을 복구합니다.
  3. 공용 IP 주소를 설정합니다.
  4. 데이터베이스를 복구합니다.

VM을 복원할 때 다음과 같은 두 가지 주요 옵션이 있습니다.

  • 백업을 처음 수행한 VM을 복원합니다.
  • 백업을 처음 수행한 VM에 영향을 주지 않고 새 VM을 복원(복제)합니다.

이 연습의 첫 번째 단계(VM 중지, 삭제 후 복구)는 첫 번째 사용 사례를 시뮬레이션합니다.

VM 중지 및 삭제

  1. Azure Portal에서 vmoracle19c 가상 머신으로 이동한 다음, 중지를 선택합니다.

  2. 가상 머신이 더 이상 실행되지 않으면 삭제를 선택한 다음, 를 선택합니다.

    Screenshot that shows the confirmation message for deleting a virtual machine.

VM 복구

  1. Azure Portal에서 준비에 사용할 스토리지 계정을 만듭니다.

    1. Azure Portal에서 + 리소스 만들기를 선택한 다음, 스토리지 계정을 검색하여 선택합니다.

      Screenshot that shows where to create a resource.

    2. 스토리지 계정 만들기 창에서 다음을 수행합니다.

      1. 리소스 그룹에 대해 기존 리소스 그룹인 rg-oracle을 선택합니다.
      2. 스토리지 계정 이름으로 oracrestore를 입력합니다.
      3. 위치가 리소스 그룹의 다른 모든 리소스와 동일한 지역으로 설정되어 있는지 확인합니다.
      4. 성능표준으로 설정합니다.
      5. 계정 종류에서 StorageV2(범용 v2)를 선택합니다.
      6. 복제의 경우 LRS(로컬 중복 스토리지)를 선택합니다.

      Screenshot that shows basic information for creating a storage account.

    3. 검토 + 만들기를 선택한 후 만들기를 선택합니다.

  2. Azure Portal에서 myVault Recovery Services 자격 증명 모음을 검색하여 선택합니다.

    Screenshot that shows selecting a Recovery Services vault.

  3. 개요 창에서 백업 항목을 선택합니다. Azure 가상 머신을 선택합니다. 그러면 백업 항목 수에 0이 아닌 숫자가 보일 것입니다.

    Screenshot that shows selections for a virtual machine backup item for a Recovery Services vault.

  4. 백업 항목(Azure 가상 머신) 창에서 vmoracle19c VM을 선택합니다.

    Screenshot that shows the pane for virtual machine backup items.

  5. vmoracle19c 창에서 일관성 유형이 애플리케이션 일치인 복원 지점을 선택합니다. 줄임표(...)를 선택한 다음, VM 복원을 선택합니다.

    Screenshot that shows the command for restoring a VM.

  6. 가상 머신 복원 창에서 다음을 수행합니다.

    1. 새로 만들기를 선택합니다.

    2. 복원 유형으로 새 가상 머신 만들기를 선택합니다.

    3. 가상 머신 이름으로 vmoracle19c를 입력합니다.

    4. 가상 네트워크vmoracle19cVNET을 선택합니다.

      가상 네트워크에 대해 선택한 내용에 따라 서브넷이 자동으로 채워집니다.

    5. 준비 위치의 경우 VM을 복원하는 프로세스에서 동일한 리소스 그룹 및 지역의 Azure 스토리지 계정이 필요합니다. 앞에서 설정한 스토리지 계정 또는 복원 작업을 선택할 수 있습니다.

    Screenshot that shows values for restoring a virtual machine.

  7. VM을 복원하려면 복원 단추를 선택합니다.

  8. 복원 프로세스의 상태를 보려면 작업을 선택한 다음, 백업 작업을 선택합니다.

    Screenshot that shows a list of backup jobs.

    진행 중 복원 작업을 선택하여 복원 프로세스 상태에 대한 세부 정보를 표시합니다.

    Screenshot that shows detailed status information about a restore process.

공용 IP 주소 설정

VM이 복원되면 원래 IP 주소를 새 VM에 다시 할당해야 합니다.

  1. Azure Portal에서 vmoracle19c 가상 머신으로 이동합니다. 이 가상 머신에 vmoracle19c-nic-XXXXXXXXXXXX 형식의 새 공용 IP와 NIC가 할당되었지만 DNS 주소는 없습니다. 원래 VM이 삭제되었을 때 해당 공용 IP와 NIC는 유지되었습니다. 다음 단계에서는 공용 IP와 NIC를 새 VM에 다시 연결합니다.

    Screenshot that shows a list of public IP addresses.

  2. VM을 중지합니다.

    Screenshot that shows selections for stopping a virtual machine.

  3. 네트워킹으로 이동합니다.

    Screenshot that shows networking information.

  4. 네트워크 인터페이스 연결을 선택합니다. 원래 공용 IP 주소가 여전히 연결된 원래 NIC vmoracle19cVMNic를 선택합니다. 그런 다음 확인을 선택합니다.

    Screenshot that shows selecting resource type and NIC values.

  5. VM 복원 작업에서 만든 NIC가 주 인터페이스로 구성되어 있으므로 이 NIC를 분리합니다. 네트워크 인터페이스 분리를 선택하고 vmoracle19c-nic-XXXXXXXXXXXX 형식의 NIC를 선택한 다음, 확인을 선택합니다.

    Screenshot that shows the pane for detaching a network interface.

    다시 만든 VM의 NIC는 원래 IP 주소 및 네트워크 보안 그룹 규칙과 연결되어 있습니다.

    Screenshot that shows an IP address value.

  6. 개요 창으로 돌아가서 시작을 선택합니다.

데이터베이스 복구

전체 VM 복원 후 데이터베이스를 복구하려면 다음을 수행합니다.

  1. VM에 다시 연결합니다.

    ssh azureuser@<publicIpAddress>
    
    

    전체 VM을 복원한 경우 각 데이터베이스에서 다음 단계를 수행하여 VM에 데이터베이스를 복구하는 것이 중요합니다.

  2. VM 시작 시 자동 시작에서 데이터베이스를 시작하려고 할 때 인스턴스가 실행 중입니다. 그러나 데이터베이스는 복구가 필요하고 탑재 단계에 있을 가능성이 높습니다. 탑재 단계를 시작하기 전에 사전 종료를 실행합니다.

    sudo su - oracle
    sqlplus / as sysdba
    SQL> shutdown immediate
    SQL> startup mount
    
  3. 데이터베이스 복구를 수행합니다.

    USING BACKUP CONTROLFILE 구문을 지정하여 복원된 데이터베이스 제어 파일에 기록된 Oracle SCN(시스템 변경 번호)에서 복구가 중지되면 안 된다고 RECOVER AUTOMATIC DATABASE 명령에 알려야 합니다.

    복원된 데이터베이스 제어 파일은 데이터베이스의 나머지 부분과 함께 스냅샷이었습니다. 그 안에 저장된 SCN은 스냅샷의 특정 시점부터입니다. 이 시점 이후에 트랜잭션이 기록되었을 수 있으며, 데이터베이스에 커밋된 마지막 트랜잭션의 시점으로 복구하려고 합니다.

    SQL> recover automatic database using backup controlfile until cancel;
    
  4. 사용 가능한 마지막 보관 로그 파일이 적용되면 CANCEL을 입력하여 복구를 종료합니다.

    복구가 성공적으로 완료되면 Media recovery complete 메시지가 나타납니다.

    그러나 BACKUP CONTROLFILE 절을 사용하는 경우 복구 명령이 온라인 로그 파일을 무시합니다. 특정 시점 복구를 완료하려면 현재 온라인 다시 실행 로그의 변경 내용이 필요할 수 있습니다. 이 경우 다음 예제와 유사한 메시지가 표시될 수 있습니다.

    SQL> recover automatic database until cancel using backup controlfile;
    ORA-00279: change 2172930 generated at 04/08/2021 12:27:06 needed for thread 1
    ORA-00289: suggestion :
    /u02/fast_recovery_area/ORATEST1/archivelog/2021_04_08/o1_mf_1_13_%u_.arc
    ORA-00280: change 2172930 for thread 1 is in sequence #13
    ORA-00278: log file
    '/u02/fast_recovery_area/ORATEST1/archivelog/2021_04_08/o1_mf_1_13_%u_.arc' no
    longer needed for this recovery
    ORA-00308: cannot open archived log
    '/u02/fast_recovery_area/ORATEST1/archivelog/2021_04_08/o1_mf_1_13_%u_.arc'
    ORA-27037: unable to obtain file status
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 7
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    

    Important

    현재 온라인 다시 실행 로그가 손실 또는 손상되어 사용할 수 없는 경우 이 시점에서 복구를 취소할 수 있습니다.

    이 문제를 시정하려면 보관되지 않은 온라인 로그를 찾아서 프롬프트에 정규화된 파일 이름을 입력하면 됩니다.

  5. 데이터베이스를 엽니다.

    RECOVER 명령에서 USING BACKUP CONTROLFILE 옵션을 사용할 때 RESETLOGS 옵션이 필요합니다. RESETLOGS는 다시 실행 기록을 처음으로 초기화하여 데이터베이스의 새 구현을 생성합니다. 이전 데이터베이스 구현 중 복구에서 건너뛴 양을 확인할 방법이 없기 때문입니다.

    SQL> alter database open resetlogs;
    
  6. 데이터베이스 콘텐츠가 복구되었는지 확인합니다.

    SQL> select * from scott.scott_table;
    

Azure Linux VM에서 Oracle Database를 백업하고 복구하는 작업이 완료되었습니다.

Oracle 명령 및 개념에 대한 자세한 내용은 다음을 비롯한 Oracle 문서에서 찾을 수 있습니다.

VM 삭제

VM이 더 이상 필요하지 않은 경우 다음 명령을 사용하여 리소스 그룹, VM 및 모든 관련 리소스를 제거할 수 있습니다.

  1. 자격 증명 모음에서 백업 일시 삭제를 사용하지 않도록 설정합니다.

    az backup vault backup-properties set --name myVault --resource-group rg-oracle --soft-delete-feature-state disable
    
  2. VM 보호를 중지하고 백업을 삭제합니다.

    az backup protection disable --resource-group rg-oracle --vault-name myVault --container-name vmoracle19c --item-name vmoracle19c --delete-backup-data true --yes
    
  3. 모든 리소스를 포함한 리소스 그룹을 제거합니다.

    az group delete --name rg-oracle
    

다음 단계

고가용성 VM 만들기

VM 배포를 위한 Azure CLI 샘플 탐색