Windows 환경에서 Oracle 데이터베이스 보호 및 복구

시작하기 전에

Windows 환경에서 Oracle 데이터베이스를 검색, 보호, 마운트하려면 먼저 다음을 확인하세요.

  1. 데이터베이스 서버에서 다음 설정을 확인합니다.

    1. Oracle 데이터베이스와 Oracle 리스너가 실행 중입니다 (Windows 서비스 확인).

    2. 이름이 SID인 tns 항목이 있는지 확인합니다. tnsnames.ora 파일은

      %ORACLE_HOME%\network\admin
      
    3. 다음을 실행하여 tns 항목이 유효한지 확인합니다.

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. 로그 모드가 로그 보관 모드로 설정되어 있는지 확인합니다.

    sql> archive log list
    

    데이터베이스가 보관처리 로그 모드가 아닌 경우 보관처리 로그 모드로 되돌립니다.

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. 데이터베이스 변경 블록 추적을 사용 설정합니다. 데이터베이스 BCT가 사용 중지되면 증분 백업 시간이 영향을 받습니다. 변경 블록 추적 기능은 Oracle Enterprise Edition에서 사용할 수 있습니다. SQL 쿼리를 실행하여 변경 블록 추적이 사용 설정되어 있는지 확인합니다. 쿼리를 실행합니다.

    sqlplus / as sysdba
    sql> select * from v$block_change_tracking;
    

변경 블록 추적을 사용 설정하려면 다음 단계를 따르세요.

    sql> alter database enable block change tracking
    using file '<Oracle home directory>\orcl.bct';

Windows 환경에서 Oracle 데이터베이스 백업

Windows 환경에서 Oracle 데이터베이스를 백업하려면 다음 단계를 따르세요.

  1. Oracle 데이터베이스용 애플리케이션 세부정보 및 설정을 설정합니다.

  2. 백업 계획을 적용하여 데이터베이스를 보호합니다.

알려진 문제

종료 명령어를 실행할 때 Oracle 19c SQLPlus (sqlplus.exe)가 Windows에서 중단되는 경우가 있습니다 (Doc ID 2820655.1). 이 버그는 Windows에서만 발생합니다. Oracle은 이 문제가 SQLPlus 버전 19.10, 19.11, 19.12에서 발생하는 것으로 확인했습니다. Oracle은 다음과 같은 해결 방법을 제공했습니다.

  • SQL*Plus 21.1 이상을 사용합니다.
  • 패치:31466370을 적용합니다. 이 패치는 19.11 및 19.13에서 사용할 수 있습니다.

백업 및 DR을 통해 아카이브 로그가 보호되지 않는 경우 Windows 환경에서 RMAN을 사용하여 예약된 백업 지점으로 Oracle 데이터베이스를 수동으로 복구

Windows 환경에서 전체 Oracle 데이터베이스를 복구하려면 다음 단계를 따르세요.

  1. Oracle 데이터베이스를 표준 마운트로 마운트에 설명된 대로 백업 및 DR의 데이터베이스 백업 스냅샷을 Oracle 서버에 다시 마운트합니다.

  2. 백업 및 DR 마운트 볼륨의 매개변수 파일을 사용하여 데이터베이스 환경을 설정하고 마운트되지 않은 상태에서 데이터베이스를 시작합니다(예: E:에 마운트된 데이터베이스 볼륨의 경우).

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. pfile에서 spfile을 만듭니다.

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. spfile이 nomount 상태인 데이터베이스를 시작합니다.

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. 백업 및 DR 마운트 볼륨에서 RMAN을 사용하여 제어 파일을 복원합니다.

    rman target /
    rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';
    
  6. 데이터베이스를 마운트합니다.

    rman> alter database mount;
    
  7. 백업 및 DR 마운트 볼륨의 데이터 파일 및 보관 파일 폴더를 RMAN에 카탈로그화합니다.

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. 데이터베이스를 복원하고 복구합니다.

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. 로그 재설정 옵션이 있는 데이터베이스를 엽니다.

    rman> alter database open resetlogs;
    

백업 및 DR 보호 아카이브 로그 롤포워드를 사용하여 RMAN을 통해 Windows 환경의 Oracle 데이터베이스를 예약된 백업 지점으로 수동으로 복구

  1. 소스 데이터베이스 서버에서 이미지를 마운트하여 복구합니다. Oracle 데이터베이스를 표준 마운트로 마운트에 설명된 대로 백업 및 DR의 백업 스냅샷을 Oracle 서버에 다시 마운트합니다.

  2. 백업 및 DR 마운트 볼륨의 매개변수 파일을 사용하여 데이터베이스 환경을 설정하고 마운트되지 않은 상태에서 데이터베이스를 시작합니다. 이 예에서 데이터베이스 백업 이미지는 E:\에 마운트되고 보호된 보관 파일 로그는 Z:\에 마운트됩니다.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. pfile에서 spfile을 만듭니다.

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. nomount 상태에서 spfile을 사용하여 데이터베이스를 시작합니다.

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. 백업 및 DR에 마운트된 보관 파일 이미지에서 RMAN을 사용하여 제어 파일을 복원합니다.

    ```rman
    rman target /
    rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl';
    ```
    
  6. 데이터베이스를 마운트합니다.

    ```rman
    rman> alter database mount;
    ```
    
  7. 백업 및 DR 마운트 데이터베이스 이미지와 아카이브 로그 이미지의 데이터 파일 및 아카이브 로그 폴더를 RMAN에 카탈로그화합니다.

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. 데이터베이스를 복원하고 복구합니다.

    ```rman
    rman> run
    {
    restore database;
    recover database;
    }
    ```
    

    특정 시점 복구의 경우 다음과 같이 recover 명령어를 실행합니다.

    ```rman
    rman> run
     {
      restore database;
      recover database until time "to_date('<time stamp>','yyyymmddhh24mi')";
     }
     ```
    
  9. 로그 재설정 옵션이 있는 데이터베이스를 엽니다.

    ```rman
    rman> alter database open resetlogs;
    ```
    

    데이터베이스를 읽고 쓸 수 있습니다.

데이터베이스 볼륨이 마운트되는지 확인하는 워치 스크립트

애플리케이션 인식 마운트를 만들면 보기 스크립트를 사용하여 백업 및 DR에서 마운트되는 볼륨과 실행 중인 Oracle 프로세스를 표시할 수 있습니다. 애플리케이션 인식 마운트는 Oracle 데이터베이스를 가상 애플리케이션으로 마운트에 설명되어 있습니다.

애플리케이션 인식 마운트를 실행할 때 이 보기 스크립트를 사용할 수 있습니다. 스크립트 위치는 C:\Program Files\Backup and DR\scripts여야 합니다. Windows 호스트에서 실행되는 스크립트는 .bat 또는 .vbs 파일이어야 합니다.

    ```Windows
    @echo off
    :loop
    echo. > watchtemp
    echo ------------------ >> watchtemp
    echo  Oracle Processes >> watchtemp
    echo ------------------ >> watchtemp
    tasklist /svc | findstr oracle >> watchtemp
    echo. >> watchtemp
    echo ------------------ >> watchtemp
    echo   Backup and DR Mounts >> watchtemp
    echo ------------------ >> watchtemp
    wmic volume get label, name | findstr Backup and DR >> watchtemp
    echo. >> watchtemp
    cls
    type watchtemp
    timeout 2 > null
    goto loop
    ```

그러면 다음과 같은 출력이 생성됩니다.

    Oracle Processes
    ------------------
    oracle.exe                    1492 OracleServiceORCL
    oracle.exe                    3768 OracleServiceTestDB
    oracle.exe                     872 OracleServiceTestDB2
    ------------------
      Backup and DR Mounts
    ------------------
    Backup and DR-Backup-ORCL    D:\mount_1