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

Data Guard 기반의 백업 오프로딩(Backup Offloading) 구조는 오라클 데이터베이스 환경에서 가장 권장되는 표준화된 고가용성(High Availability) 및 백업 아키텍처로 아래와 같은 잇점이 있습니다.
- 운영 서버(Primary) 부하 제로: 백업 프로세스(RMAN)는 디스크 I/O와 CPU 자원을 많이 소모합니다. 이를 Standby 서버로 떠넘김으로써 운영 서버는 오직 사용자 서비스(트랜잭션)에만 집중할 수 있습니다.
- 네트워크 효율성: 데이터 파일 전체를 백업하는 대신, 변경분인 Redo Log만 실시간으로 전송하므로 네트워크 대역폭을 아주 효율적으로 사용합니다.
- 이중화된 복구 레이어:
- 실시간 장애: Data Guard가 즉시 Standby로 전환하여 대응.
- 과거 데이터 복구: Standby에서 받은 RMAN 백업본으로 과거 시점 복구 대응.
아래 순서대로 “Data Guard 기반의 백업 오프로딩(Backup Offloading)” 환경구성 및 모의훈련을 실시할 예정입니다.
- Basic: Oracle DataGuard 아키텍처와 프로세스의 이해
- Part1: Catalog DB → Primary DB → Standby DB 운영환경 구성
- Part2: Catalog DB 및 Standby DB를 활용한 백업환경 구성
- Part3: Primay/Standby/Catalog 서버 중지 및 재기동 절차
- Part4: Primary DB → Standby DB로의 데이터 전송 테스트
- Part5: Primary DB의 복구 모의훈련
- Part6: Standby DB로 Switchover/Switchback/Failover 모의훈련
Part1에서는 Data Guard 기반의 백업 오프로딩(Backup Offloading) 인프라를 구현하고 연결 테스트까지 진행해 보겠습니다. 테스트에 앞서 rlwrap 유틸리티를 설치해서 사용하면 반복 쿼리 실행 시 편리합니다.
- Oracle Database 설치방법 확인 및 백업용 저장장치 준비
- 11gR2 VM(@oel7u8): 동일한 버전의 OS와 DB엔진을 가진 3대의 VM을 복제하는데 필요합니다.
구분 Primary Standby Catalog 비고 DB_NAME ORCL11G ORCL11G ORCL11G Primary와 Standby는 동일해야 함, DB운영 중 수정 불가능 DB_UNIQUE_NAME pridb stbdb catdb SERVICE_NAME pridb stbdb catdb SID pridb stbdb catdb 환경변수 및 패스워드 파일명 수정 hostname primary-db standby-db catalog-db /etc/hosts tns name PRI_DB STB_DB CAT_DB $ORACLE_HOME/network/admin/tnsnames.ora - 백업용 저장장치: Standby Database에서 RMAN을 사용하여 백업한 파일을 저장할 공간입니다.
- 11gR2 VM(@oel7u8): 동일한 버전의 OS와 DB엔진을 가진 3대의 VM을 복제하는데 필요합니다.
- 11gR2 VM(@oel7u8)에 공통 사항 설정
- /etc/hosts 파일에 Primary DB, Standby DB, Catalog DB 호스트 추가
xxx.xxx.xxx.161 primary-db xxx.xxx.xxx.162 standby-db xxx.xxx.xxx.163 catalog-db
- $ORACLE_HOME/network/admin/tnsnames.ora 파일에 TNS Name 등록
PRI_DB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = primary-db)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pridb) ) ) STB_DB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = standby-db)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = stbdb) (UR = A) #NOMOUNT 상태에서도 접속 허용, DB 복제를 위해 필요 ) ) CAT_DB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = catalog-db)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catdb) ) )
- /etc/hosts 파일에 Primary DB, Standby DB, Catalog DB 호스트 추가
- Recovery Catalog Database 준비
- VM(@oel7u8)를 복제한 후 IP address와 HOSTNAME을 변경하고 재접속합니다.
-- HOSTNAME 변경 [root@oel7u8 ~]# hostnamectl set-hostname catalog-db
dbca 유틸리티를 사용해서 기존 인스턴스(orcl)를 삭제합니다.[oracle@catalog-db ~]$ dbca -silent -deleteDatabase -sourceDB orcl -sysDBAUserName sys -sysDBAPassword <sys_password>
- 신규 인스턴스를 생성하기 위해 SID(catdb)을 설정합니다.
-- ORACLE_SID 환경변수 변경 및 반영 [oracle@catalog-db ~]$ vi ~/.bash_profile export ORACLE_SID=catdb [oracle@catalog-db ~]$ source ~/.bash_profile -- dbca.rsp 파일의 SID 정보만 수정 [oracle@catalog-db ~]$ vi /u01/sw/database/response/dbca.rsp SID = "catdb"
dbca 유틸리티를 사용해서 Catalog DB용 인스턴스(catdb)를 생성합니다.-- dbca 유틸리티를 사용해서 catdb 인스턴스 생성 [oracle@catalog-db ~]$ dbca -silent -responseFile /u01/sw/database/response/dbca.rsp -- 오라클탭 파일에서 부팅 시 자동으로 Oracle 데이터베이스 인스턴스를 시작하도록 세번째 필드 값을 Y로 변경 [root@oel7u8 ~]# vi /etc/oratab catdb:/u01/app/oracle/product/11.2.0.4.0/dbhome_1:Y -- 중요 파일 및 디렉토리 확인 ---- $ORACLE_BASE/diag/rdbms 디렉토리에는 ADR(Automatic Diagnostic Repository)의 핵심부로 모든 진단 정보와 로그가 저장되는 곳 ---- └ (DB_UNIQUE_NAME과 SERVICE_NAME을 변경한 후 어떻게 구성되는지 다시 확인 후 정리할 예정입니다.) [oracle@catalog-db ~]$ tree -L 2 $ORACLE_BASE/fast_recovery_area/ \ $ORACLE_BASE/oradata/ \ $ORACLE_BASE/diag/rdbms \ $ORACLE_HOME/dbs/ /u01/app/oracle/fast_recovery_area/ `-- ORCL11G |-- control02.ctl `-- onlinelog /u01/app/oracle/oradata/ `-- ORCL11G |-- control01.ctl |-- redo01.log |-- redo02.log |-- redo03.log |-- sysaux01.dbf |-- system01.dbf |-- temp01.dbf |-- undotbs01.dbf `-- users01.dbf /u01/app/oracle/diag/rdbms `-- orcl11g |-- catdb |-- i_1.mif `-- orcl /u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/ |-- hc_catdb.dat |-- hc_orcl.dat |-- init.ora |-- lkORCL11G |-- orapwcatdb `-- spfilecatdb.ora- 현재 DB 운영환경 확인합니다.
-- db_unique_name과 service_names을 모두 catdb로 변경할 예정입니다. SQL> SET LINESIZE 200 SET PAGESIZE 100 COL DB_NAME FOR A15 COL HOSTNAME FOR A15 COL DB_UNIQUE_NAME FOR A15 COL SID FOR A15 COL SERVICE_NAMES FOR A15 COL VERSION FOR A15 SELECT (SELECT NAME FROM V$DATABASE) as DB_NAME, HOST_NAME as HOSTNAME, (SELECT DB_UNIQUE_NAME FROM V$DATABASE) as DB_UNIQUE_NAME, INSTANCE_NAME as SID, (SELECT VALUE FROM V$PARAMETER WHERE NAME = 'service_names') as SERVICE_NAMES, VERSION FROM V$INSTANCE; DB_NAME HOSTNAME DB_UNIQUE_NAME SID SERVICE_NAMES VERSION --------------- --------------- --------------- --------------- --------------- --------------- ORCL11G catalog-db ORCL11G catdb ORCL11G 11.2.0.4.0 -- LOG_MODE, FORCE_LOGGING, FLASHBACK_ON 기능을 활성화할 예정입니다. SQL> COL log_mode FOR A15; COL force_logging FOR A15; COL flashback_on FOR A15; COL open_mode FOR A15; COL database_role FOR A15; SELECT log_mode, force_logging, flashback_on, open_mode, database_role FROM V$DATABASE; LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE --------------- --------------- --------------- --------------- --------------- NOARCHIVELOG NO NO READ WRITE PRIMARY - LOG_MODE, FORCE_LOGGING, FLASHBACK_ON 기능을 활성화하고, db_unique_name과 service_names을 변경합니다.
-- MOUNT 상태로 재시작합니다. SQL> shutdown immediate; SQL> startup mount; -- LOG_MODE, FORCE_LOGGING, FLASHBACK_ON 기능을 활성화합니다. SQL> ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER DATABASE FORCE LOGGING; -- db_unique_name과 service_names을 모두 catdb로 변경합니다. SQL> ALTER SYSTEM SET DB_UNIQUE_NAME='catdb' SCOPE=SPFILE; ALTER SYSTEM SET SERVICE_NAMES='catdb' SCOPE=SPFILE; ALTER SYSTEM SET DB_DOMAIN='' SCOPE=SPFILE; ALTER SYSTEM REGISTER; -- DB를 재시작하고 운영환경을 다시 확인해 봅니다. SQL> shutdown abort; SQL> startup; DB_NAME HOSTNAME DB_UNIQUE_NAME SID SERVICE_NAMES VERSION --------------- --------------- --------------- --------------- --------------- --------------- ORCL11G catalog-db catdb catdb catdb 11.2.0.4.0 LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE --------------- --------------- --------------- --------------- --------------- ARCHIVELOG YES YES READ WRITE PRIMARY -- ADR(Automatic Diagnostic Repository) 디렉토리 변경 사항을 확인해 봅니다. ---- ADR디렉토리는 $ORACLE_BASE/diag/rdbms/<DB_UNIQUE_NAME>/<SDI> 형식으로 생성됩니다. ---- 기존 디렉토리(orcl11g/)는 삭제해도 됩니다. [oracle@catalog-db ~]$ tree -L 2 $ORACLE_BASE/diag/rdbms /u01/app/oracle/diag/rdbms |-- catdb | |-- catdb | `-- i_1.mif `-- orcl11g |-- catdb |-- i_1.mif `-- orcl - 리스너 환경설정파일(listener.ora)를 수정하고 리스너를 실행합니다.
[oracle@catalog-db ~]$ vi $ORACLE_HOME/network/admin/listener.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = catalog-db)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = catdb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4.0/dbhome_1) (SID_NAME = catdb) ) ) -- 리스너를 시작합니다. "리스너는 서비스를 지원하지 않습니다"는 메시지가 출력되면ALTER SYSTEM REGISTER;실행합니다. [oracle@catalog-db ~]$ lsnrctl start -- 리스너의 상태를 확인합니다. [oracle@catalog-db ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-2월 -2026 14:49:59 Copyright (c) 1991, 2013, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=catalog-db)(PORT=1521)))에 연결되었습니다 리스너의 상태 ------------------------ 별칭 LISTENER 버전 TNSLSNR for Linux: Version 11.2.0.4.0 - Production 시작 날짜 24-2월 -2026 14:49:48 업타임 0 일 0 시간. 0 분. 11 초 트레이스 수준 off 보안 ON: Local OS Authentication SNMP OFF리스너 매개변수 파일 /u01/app/oracle/product/11.2.0.4.0/dbhome_1/network/admin/listener.ora 리스너 로그 파일 /u01/app/oracle/diag/tnslsnr/catalog-db/listener/alert/log.xml 끝점 요약 청취 중... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=catalog-db)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 서비스 요약... "catdb" 서비스는 1개의 인스턴스를 가집니다. "catdb" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다. 명령이 성공적으로 수행되었습니다 tnsping 명령어를 사용하여 오라클 클라이언트와 리스너 간에 정상적으로 통신되는지 확인합니다.[oracle@catalog-db ~]$ tnsping CAT_DB TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 13-2월 -2026 15:45:58 Copyright (c) 1997, 2013, Oracle. All rights reserved.f 사용된 매개변수 파일: /u01/app/oracle/product/11.2.0.1.0/dbhome_1/network/admin/sqlnet.ora 별칭 분석을 위해 TNSNAMES 어댑터 사용 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = catalog-db)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catdb)))에 접속하려고 시도하는 중 확인(0밀리초)
- Catalog DB 운영환경에 필수적인 파라미터를 설정해 보겠습니다.
-- 현재 파라미터 설정현황을 파악합니다. SQL> create pfile='/u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/initcatdb.ora' from spfile; -- 설정된 디렉토리는 OS레벨에서 생성되어 있어야 합니다. [oracle@catalog-db dbs]$ vi /u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/initcatdb.ora catdb.__db_cache_size=3909091328 catdb.__java_pool_size=16777216 catdb.__large_pool_size=33554432 catdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment catdb.__pga_aggregate_target=1610612736 catdb.__sga_target=4831838208 catdb.__shared_io_pool_size=0 catdb.__shared_pool_size=838860800 catdb.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/ORCL11G/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/oradata/ORCL11G/control01.ctl','/u01/app/oracle/fast_recovery_area/ORCL11G/control02.ctl' *.db_block_size=8192 # Activating OMF(Oracel Managed File), and Multiplexing control files and Online Redo log files *.db_create_file_dest='/u01/app/oracle/oradata' *.db_create_online_log_dest_1='/u01/app/oracle/oradata' *.db_create_online_log_dest_2='/u01/app/oracle/fast_recovery_area' *.db_domain='' *.db_name='ORCL11G' # Archive Log Destination using FRA(Fast Recovery Area) *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=20G *.db_unique_name='catdb' *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=catdbXDB)' *.local_listener='LISTENER_CATDB' *.open_cursors=500 *.pga_aggregate_target=1610612736 *.processes=300 *.remote_login_passwordfile='EXCLUSIVE' *.resumable_timeout=3600 *.service_names='catdb' *.sga_target=4831838208 *.standby_file_management='AUTO' *.undo_retention=3600 *.undo_tablespace='UNDOTBS1' # Inactivate AMM and Activate ASMM(75% of physical memory) *.memory_target=0 *.sga_target=4G *.sga_max_size=4G *.pga_aggregate_target=2G
- PFILE로 접속한 후 SPFILE을 생성합니다. ${ORACLE_HOME}/dbs/spfilecatdb.ora 파일이 업데이트됩니다.
SQL> shutdown immediate; SQL> STARTUP pfile='/u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/initcatdb.ora' NOMOUNT; SQL> CREATE spfile FROM pfile='/u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/initcatdb.ora'; SQL> SHUTDOWN ABORT; SQL> STARTUP;
- Catalog 소유 계정를 생성하고, 복구 카탈로그 테이블들을 생성합니다. Primary DB와 Standby DB를 카탈로그에 등록할 때 필요합니다.
-- 1. 유저 생성 (비밀번호는 원하는 것으로 변경하세요) ---- 복구 카탈로그 테이블들을 위한 별도의 테이블스페이스를 생성/사용할 수 있습니다. SQL> CREATE USER rman_admin IDENTIFIED BY orclsys DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; -- 2. 필수 권한 부여 (RECOVERY_CATALOG_OWNER가 핵심입니다) SQL> GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER TO rman_admin; -- 3. 복구 카탈로그 테이블들을 생성 [oracle@catalog-db ~]$ rman catalog rman_admin/orclsys 복구 관리자: Release 11.2.0.4.0 - Production on 목 2월 19 09:25:59 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 복구 카타로그 데이터베이스에 접속 RMAN> CREATE CATALOG; 복구 카탈록그가 작성되었습니다
- VM(@oel7u8)를 복제한 후 IP address와 HOSTNAME을 변경하고 재접속합니다.
- Primary Database 준비
- “3. Recovery Catalog Database 준비” 절차와 동일하게 3.10까지 진행합니다. 아래와 같은 정보가 출력된다면 Primary DB가 준비된 겁니다.
-- Primary DB 설정 현황 확인 SQL> set linesize 200; COL log_mode FOR A15; COL force_logging FOR A15; COL flashback_on FOR A15; COL open_mode FOR A15; COL database_role FOR A15; SELECT log_mode, force_logging, flashback_on, open_mode, database_role FROM V$DATABASE; LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE --------------- --------------- --------------- --------------- --------------- ARCHIVELOG YES YES READ WRITE PRIMARY SQL> SET LINESIZE 200 SET PAGESIZE 100 COL DB_NAME FOR A15 COL HOSTNAME FOR A15 COL DB_UNIQUE_NAME FOR A15 COL SID FOR A15 COL SERVICE_NAMES FOR A15 COL VERSION FOR A15 SELECT (SELECT NAME FROM V$DATABASE) as DB_NAME, HOST_NAME as HOSTNAME, (SELECT DB_UNIQUE_NAME FROM V$DATABASE) as DB_UNIQUE_NAME, INSTANCE_NAME as SID, (SELECT VALUE FROM V$PARAMETER WHERE NAME = 'service_names') as SERVICE_NAMES, VERSION FROM V$INSTANCE; DB_NAME HOSTNAME DB_UNIQUE_NAME SID SERVICE_NAMES VERSION --------------- --------------- --------------- --------------- --------------- --------------- ORCL11G primary-db pridb pridb pridb 11.2.0.4.0 - listener.ora 파일도 수정한 후 리스너 연결상태도 확인합니다.
[oracle@primary-db ~]$ tnsping PRI_DB TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 19-2월 -2026 08:58:07 Copyright (c) 1997, 2013, Oracle. All rights reserved. 사용된 매개변수 파일:/u01/app/oracle/product/11.2.0.1.0/dbhome_1/network/admin/sqlnet.ora 별칭 분석을 위해 TNSNAMES 어댑터 사용 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = primary-db)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pridb)))에 접속하려고 시도하는 중 확인(0밀리초) [oracle@primary-db ~]$ tnsping CAT_DB TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 19-2월 -2026 08:57:48 Copyright (c) 1997, 2013, Oracle. All rights reserved. 사용된 매개변수 파일:/u01/app/oracle/product/11.2.0.1.0/dbhome_1/network/admin/sqlnet.ora 별칭 분석을 위해 TNSNAMES 어댑터 사용 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = catalog-db)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catdb)))에 접속하려고 시도하는 중 확인(10밀리초)
- Primary DB를 Catalog DB에 등록합니다.
-- 1. Catalog 서버에 접속 [oracle@primary-db ~]$ rman target / catalog rman_admin/orclsys@cat_db 복구 관리자: Release 11.2.0.4.0 - Production on 목 2월 19 09:23:06 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 대상 데이터베이스에 접속합니다: ORCL11G (DBID=1331983118) 복구 카타로그 데이터베이스에 접속 -- 2. 복구 카타로그에 데이터베이스 등록 RMAN> register database; 복구 카타로그에 데이터베이스가 등록되었습니다 모든 복구 카타로그의 resync를 시작합니다 모든 resync가 완성되었습니다 -- 3. 등록 여부 확인 RMAN> LIST INCARNATION; 데이터베이스 구현 목록 DB 키 Inc 키 DB 이름 DB ID 상태 재설정 SCN 재설정 시간 ------- ------- -------- ---------------- --- ---------- ---------- 1 14 ORCL11G 1331983118 PARENT 1 13/08/24 1 2 ORCL11G 1331983118 CURRENT 925702 26/02/13 -- 4. PRIDB의 스키마 정보를 출력해 봅니다. 정상적으로 연결된 겁니다. RMAN> report schema; 모든 복구 카타로그의 resync를 시작합니다 모든 resync가 완성되었습니다 db_unique_name PRIDB을(를) 가진 데이터베이스에 대한 데이터베이스 스키마 보고서입니다. 영구 데이터 파일 목록 =========================== 파일 크기(MB) 테이블스페이스 RB 세그먼트 데이터 파일 이름 ---- -------- -------------------- ------- ------------------------ 1 740 SYSTEM YES /u01/app/oracle/oradata/ORCL11G/system01.dbf 2 510 SYSAUX NO /u01/app/oracle/oradata/ORCL11G/sysaux01.dbf 3 75 UNDOTBS1 YES /u01/app/oracle/oradata/ORCL11G/undotbs01.dbf 4 5 USERS NO /u01/app/oracle/oradata/ORCL11G/users01.dbf 임시 파일 목록 ======================= 파일 크기(MB) 테이블스페이스 최대 크기(MB) 임시 파일 이름 ---- -------- -------------------- ----------- -------------------- 1 29 TEMP 32767 /u01/app/oracle/oradata/ORCL11G/temp01.dbf -- 4. 이 데이터베이스는 똑같은 DBID를 가진 pridb와 stbdb라는 두 개의 인스턴스로 구성되어있다는 것을 정의 RMAN> CONFIGURE DB_UNIQUE_NAME 'pridb' CONNECT IDENTIFIER 'pri_db'; RMAN> CONFIGURE DB_UNIQUE_NAME 'stbdb' CONNECT IDENTIFIER 'stb_db'; -- 5. 아카이브 로그 삭제 정책 설정 ---- 최소 1번 이상 백업되었고, 모든 Standby에 적용(Applied)된 로그만 삭제 RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DISK; ..... CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DISK; new RMAN configuration parameters are successfully stored starting full resync of recovery catalog full resync complete -- 6. RMAN 백업을 진행할 예정이므로 아래 설정을 추가합니다. ---- "/backup_data/autobackup" 디렉토리는 OS레벨에서 생성해줘야 합니다.(chown oracle:oinstall, chmod +775) RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup_data/autobackup/conf_%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 2; CONFIGURE BACKUP OPTIMIZATION ON;
- “3. Recovery Catalog Database 준비” 절차와 동일하게 3.10까지 진행합니다. 아래와 같은 정보가 출력된다면 Primary DB가 준비된 겁니다.
- Standby Database 준비
- “3. Recovery Catalog Database 준비” 절차와 동일하게 3.9까지 진행합니다. 3.10단계부터 조금 달라집니다. Standby DB를 MOUNT상태에서 실시간 복구 모드(Managed Recovery)로 운영하기 위해서는 Standby용 컨트롤 파일이 필요합니다.
-- 1. Primay DB서버에서 Standby용 컨트롤 파일을 생성한 후 Standby DB서버로 전송합니다. [oracle@primary-db ~]$ ss SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/oradata/ORCL11G/control01.ctl.stbdb'; [oracle@primary-db ~]$ scp '/u01/app/oracle/oradata/ORCL11G/control01.ctl.stbdb' \ oracle@standby-db:/u01/app/oracle/oradata/ORCL11G/control01.ctl.stbdb -- 2. Standby DB서버의 컨트롤 파일을 Standby용 컨트롤 파일로 변경합니다. 컨트롤 파일은 2개로 이중화되어 있기 때문에 모두 변경해야 합니다. ----('/u01/app/oracle/oradata/ORCL11G/control01.ctl','/u01/app/oracle/fast_recovery_area/ORCL11G/control02.ctl') [oracle@standby-db ~]$ mv /u01/app/oracle/oradata/ORCL11G/control01.ctl /u01/app/oracle/oradata/ORCL11G/control01.ctl.bak mv /u01/app/oracle/oradata/ORCL11G/control01.ctl.stbdb /u01/app/oracle/oradata/ORCL11G/control01.ctl mv /u01/app/oracle/fast_recovery_area/ORCL11G/control02.ctl /u01/app/oracle/fast_recovery_area/ORCL11G/control02.ctl.bak cp /u01/app/oracle/oradata/ORCL11G/control01.ctl /u01/app/oracle/fast_recovery_area/ORCL11G/control02.ctl - PFILE로 접속한 후 SPFILE을 생성합니다. MOUNT 상태로 Standby DB를 재기동하는 것을 잊지 마세요.
SQL> shutdown immediate; SQL> STARTUP pfile='/u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/initstbdb.ora' NOMOUNT; SQL> CREATE spfile FROM pfile='/u01/app/oracle/product/11.2.0.4.0/dbhome_1/dbs/initstbdb.ora'; SQL> SHUTDOWN ABORT; SQL> STARTUP MOUNT;
- “3. Recovery Catalog Database 준비” 절차와 동일하게 3.9까지 진행합니다. “4. Primary DB 준비” 절차와 차이점이 있다면 데이터베이스를 오픈하지 않고, 마운트 상태로 실행해야 합니다.(START MOUNT) 아래와 같은 정보가 출력된다면 Standby DB가 준비된 겁니다.
SQL> set linesize 200; COL log_mode FOR A15; COL force_logging FOR A15; COL flashback_on FOR A15; COL open_mode FOR A15; COL database_role FOR A20; SELECT log_mode, force_logging, flashback_on, open_mode, database_role FROM V$DATABASE; LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE --------------- --------------- --------------- --------------- -------------------- ARCHIVELOG YES NO MOUNTED PHYSICAL STANDBY SQL> SET LINESIZE 200 SET PAGESIZE 100 COL DB_NAME FOR A15 COL HOSTNAME FOR A15 COL DB_UNIQUE_NAME FOR A15 COL SID FOR A15 COL SERVICE_NAMES FOR A15 COL VERSION FOR A15 SELECT (SELECT NAME FROM V$DATABASE) as DB_NAME, HOST_NAME as HOSTNAME, (SELECT DB_UNIQUE_NAME FROM V$DATABASE) as DB_UNIQUE_NAME, INSTANCE_NAME as SID, (SELECT VALUE FROM V$PARAMETER WHERE NAME = 'service_names') as SERVICE_NAMES, VERSION FROM V$INSTANCE; DB_NAME HOSTNAME DB_UNIQUE_NAME SID SERVICE_NAMES VERSION --------------- --------------- --------------- --------------- --------------- --------------- ORCL11G standby-db stbdb stbdb stbdb 11.2.0.4.0 - (선택사항)DB 서버를 복제해서 사용했기 때문에 Primary DB와 Standby DB의 비밀번호 파일(orapw<SID>)을 동기화시킬 필요가 없으나, Primary DB에서 sys 계정의 비밀번호를 변경했다면 반드시 동기화시켜야 합니다. 비밀번호가 달라지면 Primary DB의 리두 전송 프로세스(LNS/NSS)가 Standby DB에 접속하지 못해 ORA-01017 에러를 내며 동기화가 중단됩니다.
-- 1. Primary DB에서 orapwpridb 파일을 Standby DB로 전송 [oracle@primary-db ~]$ scp $ORACLE_HOME/dbs/orapwpridb oracle@standby-db:$ORACLE_HOME/dbs/orapwpridb oracle@standby-db's password: -- 2. Standby DB의 비밀번호 파일 교체(기본 파일 백업 후) [oracle@standby-db dbs]$ ls orapwpridb orapwpridb [oracle@standby-db dbs]$ mv ./orapwstbdb ./orapwstbdb.bak; mv ./orapwpridb ./orapwstbdb
- 실시간으로 데이터를 받아줄 ‘Standby Redo Log(SRL)’ 파일을 생성합니다. Role Transition(Switchover/Failover)을 고려하고 있다면 Primary DB에도 ‘Standby Redo Log(SRL)’ 파일을 생성해야 합니다.
-- 1. Primary DB에서 Online Redo Log 그룹 수 확인(3개) SQL> SELECT GROUP#, BYTES, BYTES/1024/1024 AS IN_MB FROM V$LOG; GROUP# BYTES IN_MB ---------- ---------- ---------- 1 52428800 50 2 52428800 50 3 52428800 50 -- 2. Standby DB에서 'Standby Redo Log(SRL)' 파일을 생성합니다. ---- Standby Redo Log 파일의 크기는 Primary DB의 Online Redo Log와 같고 갯수만 1개 더 많이 생성합니다. ---- DB_RECOVERY_FILE_DEST_SIZE 파라미터(현재 20GB)는 Standby Redo Log 파일의 전체 크기보다 커야 합니다. SQL> show parameter DB_RECOVERY_FILE_DEST_SIZE NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ db_recovery_file_dest_size big integer 20G SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 51 SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE GROUP 52 SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE GROUP 53 SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE GROUP 54 SIZE 52428800; SQL> SELECT GROUP#, BYTES, STATUS FROM V$STANDBY_LOG; GROUP# BYTES STATUS ---------- ---------- ------------------------------ 51 52428800 UNASSIGNED 52 52428800 UNASSIGNED 53 52428800 UNASSIGNED 54 52428800 UNASSIGNED - Standby DB가 RMAN 카탈로그와 연결되는지 확인합니다. Catalog DB는 DB_NAME으로 관리하는데, Primary DB와 Standby DB의 DB_NAME이 동일하므로 Standby DB는 카탈로그에 등록(
register database;)할 필요가 없습니다.[oracle@standby-db ~]$ rman target / catalog rman_admin/orclsys@cat_db RMAN> LIST INCARNATION; 데이터베이스 구현 목록 DB 키 Inc 키 DB 이름 DB ID 상태 재설정 SCN 재설정 시간 ------- ------- -------- ---------------- --- ---------- ---------- 1 14 ORCL11G 1333016804 PARENT 1 13/08/24 1 2 ORCL11G 1333016804 CURRENT 925702 26/02/25 RMAN> report schema; implicit crosscheck backup을(를) 26/02/25에서 시작 중 채널을 할당했습니다: ORA_DISK_1 ORA_DISK_1 채널: SID=124 장치 유형=DISK implicit crosscheck backup을(를) 26/02/25에서 완료 implicit crosscheck copy을(를) 26/02/25에서 시작 중 채널 ORA_DISK_1 사용 중 implicit crosscheck copy을(를) 26/02/25에서 완료 복구 영역에서 모든 파일 검색 중 파일 분류 중... 분류된 파일 없음 db_unique_name STBDB을(를) 가진 데이터베이스에 대한 데이터베이스 스키마 보고서입니다. 영구 데이터 파일 목록 =========================== 파일 크기(MB) 테이블스페이스 RB 세그먼트 데이터 파일 이름 ---- -------- -------------------- ------- ------------------------ 1 740 SYSTEM YES 2 510 SYSAUX NO 3 75 UNDOTBS1 YES 4 5 USERS NO
- “3. Recovery Catalog Database 준비” 절차와 동일하게 3.9까지 진행합니다. 3.10단계부터 조금 달라집니다. Standby DB를 MOUNT상태에서 실시간 복구 모드(Managed Recovery)로 운영하기 위해서는 Standby용 컨트롤 파일이 필요합니다.
- Primary DB와 Standby DB간 전송경로 설정 및 활성화
- Archive Log 전송경로 설정
< Primary DB > SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(pridb,stbdb)' SCOPE=BOTH; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pridb' SCOPE=BOTH; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STB_DB ASYNC NOAFFIRM NET_TIMEOUT=30 REOPEN=300 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stbdb' SCOPE=BOTH; -- Primary DB에는 FAL 파라미터를 설정하지 않아도 무방하나 Switchover/Failover 대비하여 설정하는 것이 관례입니다. SQL> ALTER SYSTEM SET FAL_SERVER='STB_DB' SCOPE=BOTH; ALTER SYSTEM SET FAL_CLIENT='PRI_DB' SCOPE=BOTH; SQL> set linesize 200; COL DEST_ID FOR 9; COL STATUS FOR A10; COL TARGET FOR A10; COL DESTINATION FOR A30; COL ERROR FOR A10; SELECT DEST_ID, STATUS, TARGET, DESTINATION, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID IN (1, 2); DEST_ID STATUS TARGET DESTINATION ERROR ------- ---------- ---------- ------------------------------ ---------- 1 VALID PRIMARY USE_DB_RECOVERY_FILE_DEST 2 VALID STANDBY stb_db < Standby DB > : Failover 상황을 대비 SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(pridb,stbdb)' SCOPE=BOTH; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stbdb' SCOPE=BOTH; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=PRI_DB ASYNC NOAFFIRM NET_TIMEOUT=30 REOPEN=300 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pridb' SCOPE=BOTH; -- FAL_SERVER: Primary DB의 TNS 서비스명으로, ---- Standby의 MRP 프로세스가 로그가 비어 있다는 것을 알았을 때, ---- "누구에게 로그를 달라고 요청할 것인가"를 지정합니다. -- FAL_CLIENT: Standby DB 자신의 TNS 서비스명으로, ---- Primary에게 요청하여 Primary DB가 로그를 보내주려고 할 때, ---- "어느 경로(네트워크 주소)로 쏴줘야 하는가"를 알려주는 식별자로써 내 정보를 동봉하는 것과 같습니다. SQL> ALTER SYSTEM SET FAL_SERVER='PRI_DB' SCOPE=BOTH; ALTER SYSTEM SET FAL_CLIENT='STB_DB' SCOPE=BOTH; -- DEST_ID 32번은 데이터 가드 환경에서 로그 전송의 무결성과 연속성을 보장하고 GAP을 자동으로 채우기 위해 예약해둔 숨겨진 채널 SQL> set linesize 200; COL DEST_ID FOR 99; COL STATUS FOR A10; COL TARGET FOR A10; COL DESTINATION FOR A30; COL ERROR FOR A10; SELECT DEST_ID, STATUS, TARGET, DESTINATION, ERROR FROM V$ARCHIVE_DEST WHERE DESTINATION IS NOT NULL; DEST_ID STATUS TARGET DESTINATION ERROR ------- ---------- ---------- ------------------------------ ---------- 1 VALID LOCAL USE_DB_RECOVERY_FILE_DEST 2 VALID REMOTE PRI_DB 32 VALID LOCAL USE_DB_RECOVERY_FILE_DEST
- Standby DB에서 “실시간 복구 모드(Managed Recovery)/복구 프로세스(MRP0)”를 시작합니다.
-- 1. Primary DB를 먼저 Standby DB로 복제(clone)합니다. ---- Standby DB는 NOMOUNT 상태여야 합니다. ---- "RMAN DUPLICATE 명령어를 사용하여 운영DB를 개발DB로 이관하기" 글을 참고하세요. [oracle@primary-db ~]$ rman target sys/orclsys@PRI_DB auxiliary sys/orclsys@STB_DB 복구 관리자: Release 11.2.0.4.0 - Production on 수 2월 25 15:17:04 2026 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 대상 데이터베이스에 접속합니다: ORCL11G (DBID=1333016804) 보조 데이터베이스에 접속됨: ORCL11G(DBID=1333016804, 열리지 않음) RMAN> debug on; RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK; ...... 1 스레드, 16 시퀀스에 대한 아카이브된 로그는 이미 디스크에 /u01/app/oracle/flash_recovery_area/STBDB/archivelog/2026_02_20/o1_mf_1_16_064gtg6q_.arc 파일로 존재합니다. 아카이브된 로그 파일 이름=/u01/app/oracle/flash_recovery_area/STBDB/archivelog/2026_02_20/o1_mf_1_16_064gtg6q_.arc 스레드=1 시퀀스=16 매체 복구 완료, 경과 시간: 00:00:00 recover을(를) 26/02/20에서 완료 Duplicate Db을(를) 26/02/20에서 완료 -- 2. Primary DB에서 Standby DB에 적용(Applied)된 아카이브 로그만 삭제 가능하도록 정책 설정 ---- Catalog DB에서 설정한 정책과 동일하지 않으면 "RMAN-08591: 경고: 아카이브된 로그 삭제 정책이 부적합합니다." 메시지가 발생합니다. RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DISK; -- 3. Standby DB에서 복구 프로세스를 실행하여 변경사항을 실시간으로(USING CURRENT LOGFILE옵션) 반영합니다. ---- Standby DB는 MOUNT 상태로 재기동해야 하며, 재기동할 때마다 아래 명령을 실행해야 합니다. ---- 병렬도(PARALLEL)는 보통 코어 수의 1~2배 내외로 설정하는 것이 가장 효율적입니다. ---- 복구 프로세스(MRP)를 중단/변경하려면
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;명령을 실행합니다. SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION PARALLEL 4; - Primary DB에서 생성되는 리두 로그를 Standby DB로 전송 활성화 및 테스트
-- 1. Primary DB 전송 활성화 SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; SQL> SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE DEST_ID=1; MAX(SEQUENCE#) -------------- 12 -- 2. Standby DB 전송 활성화 ---- RECEIVED_SEQ: Primary의 LNS프로세스가 보낸 데이터를 Standby의 RFS 프로세스가 받아서 Standby Redo Log에 쓴 뒤, 이를 다시 아카이브 파일로 만든 마지막 시퀀스 ---- APPLIED_SEQ: 아카이브 파일를 MRP 프로세스가 읽어서 실제 데이터 파일에 적용한 시퀀스 SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; SQL> SELECT 'RECEIVED_SEQ' AS TYPE, THREAD#, MAX(SEQUENCE#) FROM V$ARCHIVED_LOG GROUP BY THREAD# UNION ALL SELECT 'APPLIED_SEQ', THREAD#, MAX(SEQUENCE#) AS APPLIED_SEQ FROM V$ARCHIVED_LOG WHERE APPLIED='YES' GROUP BY THREAD#; TYPE THREAD# MAX(SEQUENCE#) ------------------------------------ ---------- -------------- RECEIVED_SEQ 1 12 APPLIED_SEQ 1 11 -- 3. Primary DB : 지금 당장 모든 Redo Log를 닫고, 아카이브 파일로 만든 뒤 전송하라 ---- 단순 로그 파일 스위치 명령어 :ALTER SYSTEM SWITCH LOGFILE;SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; -- 4. Standby DB에서 로그 전송 결과 확인 SQL> SELECT 'RECEIVED_SEQ' AS TYPE, THREAD#, MAX(SEQUENCE#) FROM V$ARCHIVED_LOG GROUP BY THREAD# UNION ALL SELECT 'APPLIED_SEQ', THREAD#, MAX(SEQUENCE#) AS APPLIED_SEQ FROM V$ARCHIVED_LOG WHERE APPLIED='YES' GROUP BY THREAD#; TYPE THREAD# MAX(SEQUENCE#) ------------------------------------ ---------- -------------- RECEIVED_SEQ 1 13 APPLIED_SEQ 1 12 -- 5. Standby DB에서 Archivelog file이 반영되고 있는지 확인합니다. ---- SEQUENCE#: 13번까지는 복구 파일로 존재하고, 현재 14번 로그를 Primary로부터 실시간으로 넘겨받으며(Real-time Apply) 적용하고 있는 중이라는 의미 SQL> SELECT PROCESS, STATUS, SEQUENCE# FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%'; PROCESS STATUS SEQUENCE# --------------------------- ------------------------------------ ---------- MRP0 APPLYING_LOG 14 -- 6. Primary DB에서 Archive 로그 시퀀스 차이 확인 ---- ARCHIVED_SEQ#: Primary DB에서 마지막으로 생성(Archived)되어 Standby DB로 전송을 완료한 로그 시퀀스 번호 ---- APPLIED_SEQ#: Standby DB에서 실제로 데이터베이스에 적용(Apply)을 완료한 로그 시퀀스 번호 SQL> COL RECOVERY_MODE FOR A15; SELECT ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#, APPLIED_SEQ#, RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2; ARCHIVED_THREAD# ARCHIVED_SEQ# APPLIED_THREAD# APPLIED_SEQ# RECOVERY_MODE ---------------- ------------- --------------- ------------ ------------------------- 1 13 1 12 MANAGED REAL TIME APPLY -- 7. Standby DB에서 전송지연 및 적용지연 시간 확인 ---- transport lag: Primary의 로그가 Standby로 전송되는 데 걸리는 지연 시간. ---- apply lag: 전송된 로그가 Standby에 실제 적용되는 데 걸리는 지연 시간. ---- 이 값들이 '00:00:00'에 가까울수록 실시간 동기화가 완벽하다는 뜻입니다. SQL> set linesize 200; COL name FOR A15; COL value FOR A15; COL datum_time FOR A20; SELECT name, value, datum_time FROM V$DATAGUARD_STATS WHERE name IN ('transport lag', 'apply lag'); NAME VALUE DATUM_TIME --------------- --------------- -------------------- transport lag +00 00:00:00 02/20/2026 13:43:02 apply lag +00 00:00:00 02/20/2026 13:43:02 -- 8. SCN(System Change Number) 확인 ---- Standby DB에서 반영된 SCN번호와, 전송된 마지막 SCN번호 확인 SQL> set linesize 200; COL STB_CURRENT FOR 9999999999; COL STB_LAST FOR 9999999999; COL PRIMARY_QUERY FOR A100 WORD_WRAPPED; SELECT (SELECT CURRENT_SCN FROM V$DATABASE) AS STB_CURRENT, (SELECT MAX(LAST_CHANGE#) FROM V$STANDBY_LOG) AS STB_LAST, 'SELECT current_scn AS PRI_CURRENT, ' || 'SCN_TO_TIMESTAMP(current_scn) AS PRI_CUR_SCN_DATE, ' || 'SCN_TO_TIMESTAMP(' || (SELECT CURRENT_SCN FROM V$DATABASE) || ') AS STB_CUR_SCN_DATE, ' || 'CASE WHEN ' || NVL((SELECT MAX(LAST_CHANGE#) FROM V$STANDBY_LOG), 0) || ' > 0 ' || 'THEN SCN_TO_TIMESTAMP(' || NVL((SELECT MAX(LAST_CHANGE#) FROM V$STANDBY_LOG), 0) || ') ' || 'ELSE NULL END AS STB_LAST_SCN_DATE FROM v$database;' AS PRIMARY_QUERY FROM DUAL; STB_CURRENT STB_LAST ----------- ---------- 983279 986720 -- 9. Primary DB의 현재 SCN번호 및 시간 확인 ---- PRI_CUR_SCN_DATE와 STB_LAST_SCN_DATE 시간 차이가 0에 가까울수록 데이터 동기화가 완벽하며, 장애 시 데이터 손실이 없습니다. SQL> set linesize 200; COL PRI_CURRENT FOR 9999999999; COL PRI_CUR_SCN_DATE FOR A30; COL STB_CUR_SCN_DATE FOR A30; COL STB_LAST_SCN_DATE FOR A30; SELECT current_scn AS PRI_CURRENT, SCN_TO_TIMESTAMP(current_scn) AS PRI_CUR_SCN_DATE, SCN_TO_TIMESTAMP(983279) AS STB_CUR_SCN_DATE, CASE WHEN 986720 > 0 THEN SCN_TO_TIMESTAMP(986720) ELSE NULL END AS STB_LAST_SCN_DATE FROM v$database; PRI_CURRENT PRI_CUR_SCN_DATE STB_CUR_SCN_DATE STB_LAST_SCN_DATE ----------- ------------------------------ ------------------------------ ------------------------------ 986752 26/02/25 16:25:03.000000000 26/02/25 15:38:05.000000000 26/02/25 16:24:30.000000000
- Archive Log 전송경로 설정
