[Oracle 11gR2] Data Guard 기반의 백업 오프로딩(Backup Offloading) 구조 구현하기 – Part2

Data Guard 기반의 백업 오프로딩(Backup Offloading) 구조
아래 순서대로 “Data Guard 기반의 백업 오프로딩(Backup Offloading)” 환경구성 및 모의훈련을 실시할 예정입니다.


Part1에서는 Catalog DB → Primary DB → Standby DB 운영환경을 구성하였습니다. Part2에서는 Catalog DB 및 Standby DB를 활용한 백업환경 구성하고 실제 백업까지하는 절차를 알아보겠습니다.


  1. 백업 파일 외부 저장소 구축
    1. “원격 파일시스템을 마운팅하기(NFS)” 글을 먼저 참고하시면 좋습니다.
    2. Primary DB와 Standby DB의 동일한 경로에 모두 외부 저장소를 마운팅합니다. 동일한 경로로 설정해야 Standby에서 백업한 파일을 Primary가 바로 읽어 Part 5(복구 훈련)를 수행할 수 있기 때문입니다.
      -- 1. Standby DB에서 수행합니다.
      ---- /etc/fstab 파일에도 반영하여 재부팅 시에도 외부저장소가 마운팅될 수 있도록 합니다.
      [root@standby-db ~]# install -o oracle -g oinstall -m 775 -d /backup_data
      [root@standby-db ~]# mount -t nfs xxx.xxx.xxx.xxx:/path/to/dbbackup /backup_data
      [root@standby-db ~]# df -hT | egrep "Filesystem|nfs"
      Filesystem                           Type      Size  Used Avail Use% Mounted on
      /dev/sr0                             iso9660   4.5G  4.5G     0 100% /run/media/root/OL-7.8 Server.x86_64
      xxx.xxx.xxx.xxx:/path/to/dbbackup    nfs        22T  7.9T   14T  36% /backup_data
      
      -- 2. Primary DB에서도 위 절차를 수행합니다.
      [root@primary-db ~]#  df -hT | egrep "Filesystem|nfs"
      Filesystem                           Type      Size  Used Avail Use% Mounted on
      xxx.xxx.xxx.xxx:/path/to/dbbackup    nfs        22T  7.9T   14T  36% /backup_data
      
  2. RMAN 구성 설정 (정책 확정)
    1. Primary DB에서 RMAN에 접속한 후 현재 설정 사항을 확인해 봅니다. “RMAN으로 백업 및 복구하기” 글을 읽으시면 환경설정에 도움이 될겁니다.
      [oracle@primary-db ~]$ rman target / catalog rman_admin/orclsys@CAT_DB
      복구 관리자: Release 11.2.0.4.0 - Production on 목 2월 26 15:13:15 2026
      Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
      대상 데이터베이스에 접속됨: ORCL11G(DBID=1333016804, 열리지 않음)
      복구 카타로그 데이터베이스에 접속
      
      RMAN> show all;
      db_unique_name PRIDB을(를) 가진 데이터베이스에 대한 RMAN 구성 매개변수:
      CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
      CONFIGURE BACKUP OPTIMIZATION OFF; # default
      CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
      CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
      CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
      CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE MAXSETSIZE TO UNLIMITED; # default
      CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
      CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
      CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
      CONFIGURE DB_UNIQUE_NAME 'pridb' CONNECT IDENTIFIER  'pridb';
      CONFIGURE DB_UNIQUE_NAME 'stbdb' CONNECT IDENTIFIER  'stbdb';
      CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
      CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/snapcf_stbdb.f'; # default
      
    2. 추가 설정
      -- 복구 가능 기간 설정 (최근 7일간은 언제든 복구 가능하게 유지)
      ---- "7일이 지난 파일은 다 지워라"가 아니라, "오늘부터 7일 전 이내의 어느 시점으로든 완벽하게 복구할 수 있도록 파일을 유지하라"는 뜻입니다.
      CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
      
      -- 백업 파일의 중복 생성을 방지하여 공간 절약
      CONFIGURE BACKUP OPTIMIZATION ON;
      
      -- 제어파일과 SPFILE을 백업 시마다 자동으로 저장 (가장 중요)
      ---- "/backup_data/autobackup" 디렉토리는 미리 생성해야 합니다.
      ---- %F(Combined ID for Control File): Control File 자동 백업에만 사용되는 복합 고유값(c-DBID-YYYYMMDD-순번)
      CONFIGURE CONTROLFILE AUTOBACKUP ON;
      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup_data/autobackup/%F';
      
      --  병렬 처리(PARALLELISM) 설정
      CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
      
      -- Archivelog 삭제 정책 설정
      ---- Archivelog가 모든 Standby DB에 적용(Applied)되고, 최소 1회 백업까지 완료된 경우에만 삭제 가능하도록 강제
      CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DISK;
      
      -- Snapshot Controlfile 위치 조정
      CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/backup_data/snapcf_pridb.f';
      
    3. 다시 show all;을 입력하여 # default 표시가 사라졌는지 확인합니다.
      -- 참고로 control_file_record_keep_time 파라미터는 RETENTION POLICY보다 커야 합니다.
      ---- control_file_record_keep_time = retention period + level 0 backup interval + 1 day.
      RMAN> show all;
      RMAN configuration parameters for database with db_unique_name PRIDB are:
      CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
      CONFIGURE BACKUP OPTIMIZATION ON;
      CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
      CONFIGURE CONTROLFILE AUTOBACKUP ON;
      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup_data/autobackup/conf_%F';
      CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
      CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE MAXSETSIZE TO UNLIMITED; # default
      CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
      CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
      CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
      CONFIGURE DB_UNIQUE_NAME 'PRIDB' CONNECT IDENTIFIER  'PRI_DB';
      CONFIGURE DB_UNIQUE_NAME 'STBDB' CONNECT IDENTIFIER  'STB_DB';
      CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY BACKED UP 1 TIMES TO DISK;
      CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/backup_data/snapcf_pridb.f';
      
    4. Standby DB에도 RMAN에 접속한 후 아래와 같이 설정합니다.
      — Controlfile 백업은 Primary DB만 필요하므로 “CONFIGURE CONTROLFILE AUTOBACKUP” 관련 설정은 Default를 유지합니다.

      RMAN> show all;
      RMAN configuration parameters for database with db_unique_name STBDB are:
      CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
      CONFIGURE BACKUP OPTIMIZATION ON;
      CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
      CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
      CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
      CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
      CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
      CONFIGURE MAXSETSIZE TO UNLIMITED; # default
      CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
      CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
      CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
      CONFIGURE DB_UNIQUE_NAME 'PRIDB' CONNECT IDENTIFIER  'PRI_DB';
      CONFIGURE DB_UNIQUE_NAME 'STBDB' CONNECT IDENTIFIER  'STB_DB';
      CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY BACKED UP 1 TIMES TO DISK;
      CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/backup_data/snapcf_stbdb.f';
      
      
  3. Standby DB 전용 백업 스크립트 작성 (Full Backup + Incremental Backup + Archivelog + Controlfile + SPfile)
    1. 데이터파일 & 아카이브 로그: Standby에서 백업 (부하 분산)
      • 이유: 백업 작업은 서버의 CPU와 디스크 I/O를 가장 많이 사용하는 작업 중 하나입니다.
      • 잇점: 운영 서버(Primary)의 자원을 전혀 건드리지 않고, 놀고 있는 Standby 서버의 자원을 활용하여 백업 본을 만듭니다. 이를 Backup Offloading이라고 합니다.
      • 결과: 사용자 서비스 응답 속도에 영향을 주지 않으면서 안정적으로 백업을 수행할 수 있습니다.
    2. Controlfile& SPfile: Primary에서 백업 (무결성 보장)
      • 이유: 컨트롤파일은 데이터베이스의 ‘주민등록등본’과 같습니다. 데이터베이스의 구조(테이블스페이스 추가, 파일 이동 등)가 변경되는 모든 순간은 Primary에서 먼저 일어납니다.
      • 잇점: Primary의 컨트롤파일은 가장 최신의 SCN 정보와 메타데이터를 담고 있는 ‘원본’입니다. Standby의 컨트롤파일은 이를 복제받는 형태이므로, 복구 시 가장 확실한 보증 수표는 Primary에서 백업받은 원본 컨트롤파일입니다.
      • 결과: 전체 장애(Disaster) 발생 시, Primary의 컨트롤파일 백업본만 있으면 가장 빠르고 정확하게 전체 환경을 재구성할 수 있습니다.
    3. Standby DB에서 아래 백업 스크립트를 저장하고 crontab을 사용해서 매일 실행합니다. “RMAN으로 백업 및 복구하기” 글을 참고하셔서 백업 스크립트를 보완하시면 좋습니다.
      [oracle@standby-db ~]$ vi /home/oracle/scripts/rman_backup.sh
      #!/bin/bash
      
      check_error() {
          if [ $1 -ne 0 ]; then
              echo " [ERROR] $2 failed at $(date '+%Y-%m-%d %H:%M:%S')" >> $LOG_FILE
              echo "Stopping backup process." >> $LOG_FILE
              exit 1
          fi
      }
      
      #############################################
      # User Environment
      #############################################
      
      export ORACLE_SID=stbdb
      export ORACLE_BASE="/u01/app/oracle"
      export ORACLE_HOME="/u01/app/oracle/product/11.2.0.4.0/dbhome_1"
      export PATH=$ORACLE_HOME/bin:$PATH
      export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
      
      #############################################
      # Catalog Connection
      #############################################
      PRI_TARGET="sys/orclsys@PRI_DB"
      STB_TARGET="/"
      
      CATALOG_USER=rman_admin
      CATALOG_PASS=orclsys
      CATALOG_TNS=CAT_DB
      CATALOG_CONN="${CATALOG_USER}/${CATALOG_PASS}@${CATALOG_TNS}"
      
      #############################################
      # Date and Backup Path Variables
      #############################################
      
      BASE_DIR=$(cd "$(dirname "$0")" && pwd)
      SCRIPT_NAME=$(basename "$0" .sh)
      
      DATE=$(date +%Y%m%d%H%M%S)
      DAY_OF_WEEK=$(date +%u)   # 1=Mon ... 7=Sun
      
      BACKUP_BASE="/backup_data"
      BACKUP_DIR="${BACKUP_BASE}/${DATE}"
      LOG_FILE=${BASE_DIR}/${SCRIPT_NAME}_${DATE}.log
      
      mkdir -p ${BACKUP_DIR}
      
      #############################################
      # Backup Type Decision
      #############################################
      #Uncomment before manually executing this script at the first time, and then comment the line below again
      #DAY_OF_WEEK="7"
      if [ "${DAY_OF_WEEK}" == "7" ]; then
          LEVEL=0
          TAG_NAME="WEEKLY_FULL_LEVEL0"
      else
          LEVEL=1
          TAG_NAME="DAILY_INCREMENTAL_LEVEL1"
      fi
      
      #Differential Incremental Backup = "", Cumulative Incremental Backup = "CUMULATIVE"
      INCREMENTALTYPE="CUMULATIVE"
      
      #############################################
      # RMAN Execution (With Catalog)
      #############################################
      
      echo "=========================================================" >> $LOG_FILE
      echo "--- Primary Archive Log Switch Started at $(date '+%Y-%m-%d %H:%M:%S') ---" >> $LOG_FILE
      echo "=========================================================" >> $LOG_FILE
      sqlplus -s ${PRI_TARGET} <<EOF
      ALTER SYSTEM ARCHIVE LOG CURRENT;
      EXIT;
      EOF
      
      check_error $? "Primary Archive Log Switch"
      
      sleep 30
      
      echo "=========================================================" >> $LOG_FILE
      echo "--- Standby Offload Backup Started at $(date '+%Y-%m-%d %H:%M:%S') ---" >> $LOG_FILE
      echo "--- Mode: $TAG_NAME                                   ---" >> $LOG_FILE
      echo "=========================================================" >> $LOG_FILE
      rman target ${STB_TARGET} catalog ${CATALOG_CONN} log=${LOG_FILE} append <<EOF1
      RUN {
        BACKUP AS COMPRESSED BACKUPSET
          INCREMENTAL LEVEL ${LEVEL} ${INCREMENTALTYPE}
          DATABASE
          FORMAT '${BACKUP_DIR}/datafile_%d_%T_%U.bkp'
          TAG '${TAG_NAME}';
      #    FORCE;
      
        BACKUP AS COMPRESSED BACKUPSET
          ARCHIVELOG ALL
          DELETE INPUT
          FORMAT '${BACKUP_DIR}/arch_%d_%T_%U.bkp'
          TAG 'ARCHIVELOG_BACKUP';
      #    FORCE;
      }
      EXIT;
      EOF1
      
      check_error $? "Standby Database Backup"
      
      echo "=========================================================" >> $LOG_FILE
      echo "--- Primary Synchronize Catalog and Backup Controlfile---" >> ${LOG_FILE}
      echo "=========================================================" >> $LOG_FILE
      rman target ${PRI_TARGET} catalog ${CATALOG_CONN} log=${LOG_FILE} append <<EOF2
      CATALOG START WITH '${BACKUP_BASE}/' NOPROMPT;
      RUN {
        CROSSCHECK BACKUP;
        CROSSCHECK COPY;
        CROSSCHECK ARCHIVELOG ALL;
      
        DELETE NOPROMPT EXPIRED BACKUP;
        DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
        DELETE NOPROMPT EXPIRED COPY;
      
        BACKUP CURRENT CONTROLFILE
          FORMAT '${BACKUP_DIR}/ctrl_%d_%T_%U.bkp'
          TAG 'CONTROLFILE_BACKUP';
      
        BACKUP SPFILE
          FORMAT '${BACKUP_DIR}/spfile_%d_%T_%U'
          TAG 'SPFILE_BACKUP';
      
        REPORT OBSOLETE;
        DELETE NOPROMPT OBSOLETE;
      #  DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-14';
      
        RESYNC CATALOG;
      }
      EXIT;
      EOF2
      
      check_error $? "Primary Controlfile Backup & Cleanup"
      
      echo "=========================================================" >> $LOG_FILE
      echo "--- Standby Synchronize Catalog                       ---" >> ${LOG_FILE}
      echo "=========================================================" >> $LOG_FILE
      rman target ${STB_TARGET} catalog ${CATALOG_CONN} log=${LOG_FILE} append <<EOF3
      CATALOG START WITH '${BACKUP_BASE}/autobackup/' NOPROMPT;
      CATALOG START WITH '${BACKUP_DIR}/' NOPROMPT;
      EXIT;
      EOF3
      
      check_error $? "Standby Synchronizing"
      
      #############################################
      # OS Level Clean up
      #############################################
      echo "=========================================================" >> $LOG_FILE
      echo "--- Cleaning up empty backup directories              ---" >> ${LOG_FILE}
      find ${BACKUP_BASE} -type f -name "init${ORACLE_SID}.ora*" -mtime +7 -exec rm -f {} \;
      find /backup_data -maxdepth 1 -type d -empty -mmin +60 -exec rmdir {} \;
      echo "--- Backup completed at $(date)" >> ${LOG_FILE}
      echo "=========================================================" >> $LOG_FILE
      
    4. /home/oracle/scripts/rman_backup.sh를 실행한 후 /backup_data/yyyymmddHiMMSS 디렉토리에 백업되는지 확인해 봅니다.
      [oracle@standby-db scripts]$ tree /backup_data/
      /backup_data/
      |-- 20260317090001
      |   |-- arch_ORCL11G_20260317_4p4j79sv_1_1.bkp
      |   |-- arch_ORCL11G_20260317_4q4j79sv_1_1.bkp
      |   |-- arch_ORCL11G_20260317_4r4j79t0_1_1.bkp
      |   |-- ctrl_ORCL11G_20260317_094j79ub_1_1.bkp
      |   |-- datafile_ORCL11G_20260317_4l4j79sm_1_1.bkp
      |   |-- datafile_ORCL11G_20260317_4m4j79sm_1_1.bkp
      |   |-- datafile_ORCL11G_20260317_4n4j79sn_1_1.bkp
      |   |-- datafile_ORCL11G_20260317_4o4j79sr_1_1.bkp
      |   `-- spfile_ORCL11G_20260317_0a4j79ug_1_1
      |-- autobackup
      |   `-- conf_c-1333016804-20260317-00
      |-- snapcf_pridb.f
      `-- snapcf_stbdb.f
      
    5. RMAN의 모든 백업 데이터 및 백업 이력을 삭제하고 싶다면 아래 스크립트를 실행합니다.
      [oracle@standby-db ~]$ vi /home/oracle/scripts/rman_cleanup_all.sh
      #!/bin/bash
      
      #############################################
      # User Environment
      #############################################
      export ORACLE_SID=stbdb
      export ORACLE_BASE="/u01/app/oracle"
      export ORACLE_HOME="/u01/app/oracle/product/11.2.0.4.0/dbhome_1"
      export PATH=$ORACLE_HOME/bin:$PATH
      
      CATALOG_USER=rman_admin
      CATALOG_PASS=orclsys
      CATALOG_TNS=CAT_DB
      BACKUP_BASE="/backup_data"
      
      echo "!!! WARNING: This will delete ALL backup sets and physical files !!!"
      echo "Are you sure you want to proceed? (yes/no)"
      read -r CONFIRM
      if [ "$CONFIRM" != "yes" ]; then
          echo "Cleanup cancelled."
          exit 1
      fi
      
      #############################################
      # RMAN Cleanup (Catalog + Controlfile)
      #############################################
      
      rman target sys/orclsys@stb_db catalog ${CATALOG_USER}/${CATALOG_PASS}@${CATALOG_TNS} <<EOF
      CROSSCHECK BACKUP;
      CROSSCHECK ARCHIVELOG ALL;
      CROSSCHECK COPY;
      
      DELETE NOPROMPT BACKUP;
      DELETE NOPROMPT ARCHIVELOG ALL;
      DELETE NOPROMPT COPY;
      
      DELETE NOPROMPT EXPIRED BACKUP;
      DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
      DELETE NOPROMPT EXPIRED COPY;
      
      RESYNC CATALOG;
      EOF
      
      #############################################
      # OS Level Cleanup (Physical Files & Dirs)
      #############################################
      
      echo "--- Deleting all physical files in ${BACKUP_BASE} ---"
      find ${BACKUP_BASE} -type f -name "init${ORACLE_SID}.ora*" -exec rm -f {} \;
      find ${BACKUP_BASE} -maxdepth 1 -type d -empty -exec rmdir {} \;
      find ${BACKUP_BASE} -name "snapcf_*.f" -exec rm -f {} \;
      
      echo "--- Cleanup Completed ---"
      
  4. 백업 유효성 검증
    1. 백업 정보 일치 여부 검증 (Primary DB vs Standby DB)
      RMAN> RUN {
      CROSSCHECK BACKUP;
      CROSSCHECK ARCHIVELOG ALL;
      CROSSCHECK COPY;
      DELETE NOPROMPT EXPIRED BACKUP;
      DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
      DELETE NOPROMPT EXPIRED COPY;
      }
      RMAN> LIST BACKUP SUMMARY;
      List of Backups
      ===============
      Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
      ------- -- -- - ----------- --------------- ------- ------- ---------- ---
      ....
      
    2. Primary DB 리스트에 누락된 백업이 있다면, CATALOG START WITH '디렉토리 경로' 명령으로 디렉토리 전체를 스캔하거나, CATALOG BACKUPPIECE '파일 경로' 명령으로 특정 백업 파일을 개별 등록하여 동기화할 수 있습니다.
      -- Primary DB에서 디렉토리 내 모든 파일 스캔 및 일괄 등록
      RMAN> CATALOG START WITH '/backup_data/경로/'
      
      -- Primary DB에서 특정 파일 지정 개별 등록
      RMAN> CATALOG BACKUPPIECE '/backup_data/경로/파일명.bkp'
      
    3. 백업 파일 유효성 검증 (Physical Validity)
      RUN {
        # 데이터파일 및 필요한 아카이브 로그 유효성을 점검합니다. 백업셋에서 블록을 읽어 체크섬을 대조합니다.
        RESTORE DATABASE VALIDATE;
      
        # 아카이브 로그 백업 파일 검증
        RESTORE ARCHIVELOG ALL VALIDATE;
      
        # 백업셋 내부에 저장된 제어파일 데이터 블록들이 온전한지, 그리고 현재 DB의 DBID와 일치하는지 확인합니다.
        RESTORE CONTROLFILE VALIDATE;
      
        # 동일한 백업셋 내부에 저장된 SPFILE 바이너리 블록들을 추출하여 구조적 결함이 없는지 확인합니다.
        RESTORE SPFILE VALIDATE;
      
        # 복구에 필요한 파일 목록 미리보기 (실제 복구 전 시뮬레이션)
        RESTORE DATABASE PREVIEW;
      }
      

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다