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

적용 대상: ✔️ Linux VM

이 문서에서는 Azure VM(가상 머신)에서 실행되는 Oracle 데이터베이스를 백업 및 복원하기 위한 미디어로 Azure Files를 사용하는 방법을 보여 줍니다. 이 문서의 단계는 Oracle 12.1 이상에 대해 테스트되었습니다.

이 문서에서는 Oracle RMAN(Recovery Manager)을 사용하여 SMB(서버 메시지 블록) 프로토콜을 통해 데이터베이스를 VM에 탑재된 Azure 파일 공유에 백업합니다. Azure Files를 백업 미디어에 사용하는 것은 비용 효율적이고 성능이 뛰어납니다. 그러나 초대형 데이터베이스의 경우 Azure Backup은 더 나은 솔루션을 제공합니다.

필수 조건

  • 백업 및 복구 프로세스를 수행하려면 먼저 Oracle Database의 인스턴스가 설치되어 있는 Linux VM을 만들어야 합니다. Oracle 12.x 이상을 사용하는 것이 좋습니다.

  • Azure VM에서 Oracle 데이터베이스 인스턴스 만들기의 단계에 따라 Oracle Database 인스턴스를 만듭니다.

데이터베이스 환경 준비

  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
    
  4. 이 단계에서는 vmoracle19c라는 VM에서 실행되는 Oracle 인스턴스(test)가 있다고 가정합니다.

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

    sudo su - oracle
    
  5. 연결하기 전에 ORACLE_SID 환경 변수를 설정합니다.

    export ORACLE_SID=test;
    

    또한 다음 명령을 사용하여 향후 로그인을 위해 ORACLE_SID 변수를 oracle 사용자의 .bashrc 파일에 추가해야 합니다.

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. 아직 실행되고 있지 않은 경우 Oracle 수신기를 시작합니다.

    lsnrctl start
    

    출력은 다음 예제와 유사하게 표시됩니다.

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2020 03:23:49
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                18-SEP-2020 03:23:49
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    The listener supports no services
    The command completed successfully
    
  7. 빠른 복구 영역에 대한 위치를 만듭니다.

    mkdir /u02/fast_recovery_area
    
  8. 데이터베이스에 연결합니다.

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

    SQL> startup
    
  10. 빠른 복구 영역에 대한 데이터베이스 환경 변수를 설정합니다.

    SQL> alter system set db_recovery_file_dest_size=4096M scope=both;
    SQL> alter system set db_recovery_file_dest='/u02/fast_recovery_area' scope=both;
    
  11. 온라인 백업을 사용하도록 설정하려면 데이터베이스가 ARCHIVELOG 모드에 있는지 확인합니다.

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

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

    로그 보관이 NOARCHIVELOG 모드인 경우 SQL Plus에서 다음 명령을 실행합니다.

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

    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 Files에 백업

Azure Files에 백업하려면 다음 단계를 완료합니다.

  1. Azure Files 설정.
  2. VM에 Azure 파일 공유 탑재.
  3. 데이터베이스를 백업합니다.
  4. 데이터베이스 복원 및 복구.

Azure Files 설정

이 섹션에서는 Oracle RMAN을 사용하여 Oracle 데이터베이스를 Azure Files에 백업합니다. Azure 파일 공유는 클라우드에서 유지되는 완전 관리형 파일 공유입니다. SMB 프로토콜 또는 NFS(네트워크 파일 시스템) 프로토콜을 사용하여 액세스할 수 있습니다.

다음 절차에서는 SMB 프로토콜을 사용하여 VM에 탑재하는 파일 공유를 만드는 방법을 설명합니다. NFS를 사용하여 탑재하는 방법에 대한 자세한 내용은 NFS 공유 만들기를 참조하세요.

Azure 파일 공유를 탑재할 때 cache=none 옵션을 사용하여 파일 공유 데이터 캐싱을 사용하지 않도록 설정합니다. oracle 사용자가 공유에 만든 파일을 소유하도록 하려면 uid=oraclegid=oinstall 옵션을 설정합니다.

스토리지 계정을 설정합니다.

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

    Screenshot that shows where to create a resource and select a storage account.

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

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

    Screenshot that shows basic information for creating a storage account.

  3. 고급 탭을 선택합니다. Azure Files 아래에서 대용량 파일 공유사용으로 설정합니다. 검토 + 만들기를 선택한 후 만들기를 선택합니다.

    Screenshot that shows the tab for enabling large file shares.

  4. 스토리지 계정이 만들어지면 리소스로 이동하여 파일 공유를 선택합니다.

    Screenshot that shows where to select file shares for a resource.

  5. + 파일 공유를 선택한 다음, 새 파일 공유 패널에서 다음을 수행합니다.

    1. 이름에 대해 orabkup1을 입력합니다.

    2. 할당량10240GiB(기비바이트)로 설정합니다.

      할당량은 파일 공유를 확장할 수 있는 상한을 반영합니다. 이 예에서는 표준 스토리지를 사용하므로 리소스는 종량제이며 프로비전되지 않습니다. 따라서 할당량을 10TiB(테비바이트)로 설정해도 사용량을 초과하는 비용이 발생하지 않습니다. 백업 전략에 더 많은 스토리지가 필요한 경우 모든 백업을 보관할 수 있도록 할당량을 적절한 수준으로 설정합니다.

    3. 계층 아래에서 트랜잭션 최적화를 선택합니다.

    4. 만들기를 실행합니다.

    Screenshot that shows selections for adding a new file share.

  6. 파일 공유가 만들어지면 파일 공유 설정 창에서 orabkup1을 선택합니다.

  7. 연결 탭을 선택하여 연결 패널을 연 다음, Linux 탭을 선택합니다. 제공된 명령을 복사합니다. 이 명령은 SMB 프로토콜을 사용하여 파일 공유를 탑재합니다.

    Screenshot that shows the panel for accessing the commands to connect a file share to a Linux computer.

Azure 파일 공유를 VM에 탑재

  1. 탑재 지점을 만듭니다.

    sudo mkdir /mnt/orabackup
    
  2. 자격 증명을 설정합니다.

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. 다음 명령을 실행합니다. <Your Storage Account Key1>을 이전에 검색한 스토리지 계정 키로 바꿉니다.

    if [ ! -f "/etc/smbcredentials/orabackup1.cred" ]; then
      sudo bash -c 'echo "username=orabackup1" >> /etc/smbcredentials/orabackup1.cred'
      sudo bash -c 'echo "password=<Your Storage Account Key1>" >> /etc/smbcredentials/orabackup1.cred'
    fi
    
  4. 자격 증명 파일에 대한 권한을 변경합니다.

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. /etc/fstab 파일에 탑재를 추가합니다.

    sudo bash -c 'echo "//orabackup1.file.core.windows.net/orabackup /mnt/orabackup cifs nofail,vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall" >> /etc/fstab'
    
  6. SMB 프로토콜을 사용하여 Azure 파일 공유를 탑재하는 명령을 실행합니다.

    sudo mount -t cifs //orabackup1.file.core.windows.net/orabackup /mnt/orabackup -o vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall
    

    다음 예제와 비슷한 오류가 발생하면 CIFS(공용 인터넷 파일 시스템) 패키지가 Linux 호스트에 설치되지 않았을 수 있습니다.

    mount: wrong fs type, bad option, bad superblock on //orabackup1.file.core.windows.net/orabackup
    

    CIFS 패키지가 설치되어 있는지 확인하려면 다음 명령을 실행합니다.

    sudo rpm -qa|grep cifs-utils
    

    명령에서 출력을 반환하지 않으면 다음 명령을 사용하여 CIFS 패키지를 설치합니다. 그런 다음, mount 명령을 다시 실행하여 Azure 파일 공유를 탑재합니다.

    sudo yum install cifs-utils
    
  7. 다음 명령을 사용하여 파일 공유가 제대로 탑재되었는지 확인합니다.

    df -h
    

    출력은 다음 예제와 비슷합니다.

    $ df -h
    Filesystem                                    Size  Used Avail Use% Mounted on
    devtmpfs                                      3.3G     0  3.3G   0% /dev
    tmpfs                                         3.3G     0  3.3G   0% /dev/shm
    tmpfs                                         3.3G   17M  3.3G   1% /run
    tmpfs                                         3.3G     0  3.3G   0% /sys/fs/cgroup
    /dev/sda2                                      30G  9.1G   19G  34% /
    /dev/sdc1                                      59G  2.7G   53G   5% /u02
    /dev/sda1                                     497M  199M  298M  41% /boot
    /dev/sda15                                    495M  9.7M  486M   2% /boot/efi
    tmpfs                                         671M     0  671M   0% /run/user/54321
    /dev/sdb1                                      14G  2.1G   11G  16% /mnt/resource
    tmpfs                                         671M     0  671M   0% /run/user/54322
    //orabackup1.file.core.windows.net/orabackup   10T     0   10T   0% /mnt/orabackup
    

데이터베이스 백업

이 섹션에서는 Oracle RMAN을 사용하여 데이터베이스 및 보관 로그의 전체 백업을 수행합니다. 그런 다음, 백업을 백업 세트로 이전에 탑재한 Azure 파일 공유에 씁니다.

  1. Azure Files 탑재 지점에 백업할 RMAN을 구성합니다.

    rman target /
    RMAN> configure snapshot controlfile name to '/mnt/orabkup/snapcf_ev.f';
    RMAN> configure channel 1 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    RMAN> configure channel 2 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    
  2. 다음 예제에서는 RMAN 백업 조각의 크기를 4GiB로 제한합니다. 그러나 RMAN 백업 maxpiecesize 값은 Azure 표준 파일 공유 및 프리미엄 파일 공유에 대한 파일 크기 제한인 최대 4TiB까지 증가할 수 있습니다. 자세한 내용은 Azure Files 확장성 및 성능 목표를 참조하세요.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. 구성 변경 세부 정보를 확인합니다.

    RMAN> show all;
    
  4. 백업을 실행합니다. 다음 명령은 보관 로그 파일을 포함하여 전체 데이터베이스 백업을 압축 형식의 백업 세트로 사용합니다.

    RMAN> backup as compressed backupset database plus archivelog;
    

이제 Azure Files에 있는 백업과 함께 Oracle RMAN을 사용하여 데이터베이스를 온라인으로 백업했습니다. 백업을 Azure Files에 저장하므로 데이터베이스를 복제해야 하는 경우 다른 VM에서 해당 백업에 액세스할 수 있습니다.

RMAN 및 Azure Files를 데이터베이스 백업에 사용하면 많은 장점이 있지만 백업 및 복원 시간은 데이터베이스 크기와 연결됩니다. 매우 큰 데이터베이스의 경우 이러한 작업에는 상당한 시간이 걸릴 수 있습니다.

대안은 Azure Backup을 통해 애플리케이션 일치 VM 백업을 사용하는 것입니다. 이 메커니즘은 스냅샷 기술을 사용하여 데이터베이스 크기에 관계없이 빠른 백업을 수행합니다. Recovery Services 자격 증명 모음과 통합하면 Oracle Database 백업의 클라우드 스토리지가 제공되므로 다른 VM 및 다른 Azure 지역에서 액세스할 수 있습니다.

데이터베이스 복원 및 복구

  1. Oracle 인스턴스를 종료합니다.

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. 데이터베이스 데이터 파일을 제거합니다.

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. 다음 명령은 RMAN을 사용하여 누락된 데이터 파일을 복원하고 데이터베이스를 복구합니다.

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. 데이터베이스 콘텐츠가 완전히 복구되었는지 확인합니다.

    RMAN> SELECT * FROM scott.scott_table;
    

이제 Azure Linux VM에서 Oracle Database 19c 데이터베이스의 백업 및 복구가 완료되었습니다.

VM 삭제

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

az group delete --name rg-oracle

다음 단계

고가용성 VM 만들기

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