🧭 전체 로드맵 (끝까지 이 순서대로)
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 다운로드
- 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 실습