본문 바로가기
🗄️ DB_이야기/# 🛢️ Oracle

[Oracle] Oracle Data Guard 설치(1)

by gwon_s 2025. 12. 22.

🧭 전체 로드맵 (끝까지 이 순서대로)

1️⃣ VirtualBox 설치
2️⃣ VirtualBox 네트워크 구성
3️⃣ Oracle Linux VM 2대 생성
4️⃣ OS 기본 설정
5️⃣ Oracle 19c 설치 (Primary)
6️⃣ ARCHIVELOG / FORCE LOGGING
7️⃣ Standby 준비
8️⃣ RMAN DUPLICATE
9️⃣ Data Guard 동작 확인
🔟 Switchover / Failover 테스트


1️⃣ VirtualBox 설치 (호스트 PC)

✅ 1-1. VirtualBox 다운로드

👉 https://www.virtualbox.org

  • Windows hosts 선택
  • 최신 버전 설치 (7.x 권장)

✅ 1-2. Extension Pack도 같이 설치

  • VirtualBox 버전과 완전히 동일한 버전
  • 더블클릭 → VirtualBox로 자동 설치됨

📌 이거 안 깔면 네트워크/USB에서 문제 생길 수 있음


2️⃣ VirtualBox 네트워크 구성 (중요)

Data Guard는 VM 2대가 서로 통신만 하면 됨

✅ 2-1. NAT Network 생성

VirtualBox 메뉴:

파일 → 도구 → 네트워크 관리자 → NAT 네트워크

설정

  • 이름: DG-NET
  • 네트워크 CIDR: 10.0.2.0/24
  • DHCP: ❌ 끔

👉 이 NAT Network 하나로 Primary + Standby 통신 해결


3️⃣ Oracle Linux ISO 준비

✅ 3-1. Oracle Linux 8 권장

(9도 가능하지만 8이 자료가 더 많음)

👉 https://yum.oracle.com/oracle-linux-isos.html

  • Oracle Linux 8 x86_64 ISO
  • Full ISO 권장

4️⃣ VM 2대 생성 (Primary / Standby)

🔹 공통 VM 스펙 (둘 다 동일)

항목값
이름 primary-db / standby-db
OS Linux / Oracle Linux (64-bit)
CPU 2
RAM 4096MB
디스크 50GB (동적 할당)

🔹 네트워크 설정 (둘 다)

어댑터 1

  • 네트워크 방식: NAT Network
  • 이름: DG-NET

어댑터 2

후에 Oracle 소프트웨어 설치파일을 옮기기 위해 어댑터2 사용

  • 네트워크 방식: Host-Only Adapter

5️⃣ Oracle Linux 설치 (Primary 먼저)

🔹 파티션 (자동 말고 수동 권장)

마운트 크기
/boot 1GB
swap 2GB
/ 나머지

🔹 필수 설정

  • Software Selection: Minimal Install
  • Hostname: primary
  • 네트워크: 수동 IP

IP 설정

IP: 10.0.2.101
NETMASK: 255.255.255.0
GATEWAY: 10.0.2.1
DNS: 8.8.8.8

6️⃣ Standby VM도 동일하게 설치

차이점은 IP / hostname만 다름

hostname: standby
IP: 10.0.2.102

7️⃣ 두 VM 공통 OS 기본 설정

🔹 /etc/hosts (둘 다 동일)

10.0.2.101 primary
10.0.2.102 standby

🔹 시간 동기화

dnf install -y chrony
systemctl enable chronyd --now

🔹 SELinux / 방화벽

 
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config

systemctl stop firewalld
systemctl disable firewalld

8️⃣ Oracle 설치 준비 (Primary)

🔹 oracle 계정 생성

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

🔹 커널 파라미터 / 패키지

👉 이 부분은 oracle-database-preinstall-19c 패키지로 한 방에 처리

dnf install -y oracle-database-preinstall-19c
 
 

9️⃣ Oracle 19c 설치 (Primary)

  • ORACLE_BASE: /u01/app/oracle
  • ORACLE_HOME: /u01/app/oracle/product/19c/dbhome_1
  • DB_NAME: DGDB
  • DB_UNIQUE_NAME: DGPRI

👉 Single Instance / File System

 

더보기

1️⃣ 디렉토리 생성 (root 계정)

mkdir -p /u01/app/oracle/product/19c/dbhome_1
mkdir -p /u01/app/oraInventory 
chown -R oracle:oinstall /u01 
chmod -R 775 /u01

 

📌 구조 확인

/u01/app/oracle 
/u01/app/oracle/product/19c/dbhome_1
 

2️⃣ Oracle 소프트웨어 압축 해제 (oracle 계정)

LINUX.X64_193000_db_home.zip 설치 링크

 

oracle 계정으로 전환

su - oracle

 

설치 파일 위치 예시:

cd /u01/app/oracle/product/19c/dbhome_1
unzip ~/LINUX.X64_193000_db_home.zip

 


3️⃣ oracle 환경 변수 설정 (Primary) 

 
su - oracle
vi ~/.bash_profile

 

아래 추가 👇

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export ORACLE_SID=DGDB
export PATH=$ORACLE_HOME/bin:$PATH

 

적용

source ~/.bash_profile
 

확인

echo $ORACLE_BASE
echo $ORACLE_HOME
echo $ORACLE_SID

 

response 파일 수정(Primary)

cd $ORACLE_HOME/install/response
vi db_install.rsp

 

🔧 아래 항목들만 꼭 확인/수정

oracle.install.option=INSTALL_DB_SWONLY

UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory

ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
ORACLE_BASE=/u01/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba

# 아래 옵션이 없을땐 작성
DECLINE_SECURITY_UPDATES=true

 

Silent 설치 실행 (Primary) 

cd $ORACLE_HOME
./runInstaller -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp \
-ignorePrereqFailure

 

root 스크립트 실행 (중요)

root 계정으로 스크립트 실행

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19c/dbhome_1/root.sh

 

설치 완료 확인 (Primary) 

sqlplus -v

버전 나오면 설치 완료

 

DBCA Silent로 데이터베이스 생성 (Primary) 

항목
Database Type Single Instance
Template General Purpose
DB_NAME DGDB
DB_UNIQUE_NAME DGPRI
Storage File System
Datafile Location $ORACLE_BASE/oradata
Memory Auto / 수동 선택
Character Set AL32UTF8
Sample Schemas 선택
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname DGDB \
-sid DGDB \
-responseFile NO_VALUE \
-characterSet AL32UTF8 \
-createAsContainerDatabase false \
-databaseType OLTP \
-memoryMgmtType auto_sga \
-totalMemory 2048 \
-storageType FS \
-datafileDestination /u01/app/oracle/oradata \
-redoLogFileSize 200 \
-emConfiguration NONE \
-databaseConfigType SINGLE \
-initParams db_unique_name=DGPRI

 

생성 후 필수 확인(Primary) 

ps -ef | grep pmon

#출력 결과
ora_pmon_DGDB
sqlplus / as sysdba
SELECT name, open_mode, database_role FROM v$database;

#정상 결과
DGDB | READ WRITE | PRIMARY

 

 


 

🔟 Primary DB 설정 (Data Guard 필수) 

 
ALTER DATABASE FORCE LOGGING;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

 

🔜 다음 단계 예고 

  • Standby Oracle 설치
  • RMAN DUPLICATE FROM ACTIVE
  • Data Guard Broker 구성
  • Switchover / Failover 실습