Vagrant 를 사용하면 복잡하게 Oracle XE 다운받고 설정할 필요없이 간단하게 설치가 가능합니다.
ChatGPT 에 사용한 프롬프트입니다
vagrant 로 virtualbox 에 rocky linux 9 에 oracle 개인 무료 버전 21c를 설치하고
VM 의 IP 는 192.168.56.10 로 설정하고
VM 이름은 oracle21c 으로 설치하는 방법을 단계별로 알려주세요.
disksize 는 20GB 로 늘려주세요. 메모리는 4GB 로 할당해주세요.
전체적으로 다음과 같은 과정으로 진행이 됩니다.
- Vagrant plugin 설치
- Vagrant 프로젝트 폴더 만들기
- Vagrantfile 생성
- Vagrant 실행 (vagrant up)
1) Vagrant Plugin 설치
Vagrant 는 기본적으로 저장공간은 10GB 입니다.
Oracle 은 최소 20GB 를 필요로하기 때문에 disk size 를 20GB로 늘렸습니다.
Vagrant 에서 disk size 를 늘리기 위해 disksize plugin 이 필요합니다.
다음과 같이 plugin 을 설치합니다.
vagrant plugin install vagrant-disksize
2) Vagrant 프로젝트 폴더 만들기
프로젝터 폴더를 생성합니다.
폴더 이름은 본인이 원하는 이름을 사용해도 됩니다.
mkdir vagrant-rocky-oracle-xe
cd vagrant-rocky-oracle-xe
vagrant init generic/rocky9
generic/rocky9는 Rocky Linux 9을 기반으로 하는 Vagrant Box입니다.
Vagrantfile 을 아래와 같이 수정합니다.
4GB 메모리로 oracle 21c 설치하는 예제입니다.
아래 코드는 다음에서 다운로드가 가능합니다.
git clone git@github.com:jbpark/jbDeskExample.git
cd jbDeskExample/vagrant/ch1.2
Vagrantfile
Vagrant.configure("2") do |config|
# ✅ Rocky Linux 9 사용
config.vm.box = "rockylinux/9"
config.disksize.size = '20GB'
# VM 이름 설정
config.vm.define "oracle21c" do |oracle|
oracle.vm.hostname = "oracle21c"
# 네트워크 설정 (고정 IP)
oracle.vm.network "private_network", ip: "192.168.56.10"
# VirtualBox 설정
oracle.vm.provider "virtualbox" do |vb|
vb.name = "oracle21c"
vb.memory = "4096"
vb.cpus = 2
end
config.vm.synced_folder ".", "/vagrant", disabled: true
# 프로비저닝 (Oracle 21c XE 설치)
oracle.vm.provision "shell", inline: <<-SHELL
echo "=====[ 1. resize disk ]====="
sudo yum clean all
sudo yum -y update
sudo yum install cloud-utils-growpart -y
sudo growpart /dev/sda 4
sudo xfs_growfs /
echo "=====[ 2. 패키지 업데이트 및 필수 라이브러리 설치 ]====="
sudo yum -y install wget
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld
# 의존 패키지 설치
sudo wget https://dl.rockylinux.org/pub/rocky/8/AppStream/x86_64/os/Packages/c/compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
sudo dnf -y localinstall compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
echo "=====[ 3. Oracle 설치 ]====="
# 사전 설치 파일 다운로드
sudo curl -o oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
sudo dnf -y localinstall oracle-database-preinstall-21c*
# 설치 파일 실행
# -L 옵션 : Redirect (301, 302)가 응답될 경우, redirect 된 링크로 가서, 파일을 다운로드 받음
sudo curl -L -o oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
sudo dnf -y localinstall oracle-database-xe-21c*
# rpm 파일 삭제
sudo rm -rf compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
sudo rm -rf oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
sudo rm -rf oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
export CV_ASSUME_DISTID=RHEL8
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE
export ORACLE_SID=XE
export PATH=/opt/oracle/product/21c/dbhomeXE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:\$PATH
sudo echo "========== Setting up environment variables =========="
sudo echo "export CV_ASSUME_DISTID=RHEL8" | sudo tee -a /etc/environment
sudo echo "export ORACLE_BASE=/opt/oracle" | sudo tee -a /etc/environment
sudo echo "export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE" | sudo tee -a /etc/environment
sudo echo "export PATH=/opt/oracle/product/21c/dbhomeXE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:\$PATH" | sudo tee -a /etc/environment
sudo echo "export ORACLE_SID=XE" | sudo tee -a /etc/environment
source /etc/environment
echo "========== Removing old listener config if exists =========="
sudo rm -rf /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
echo "Updating /etc/hosts..."
sudo bash -c 'echo "192.168.56.10 oracle21c" >> /etc/hosts'
echo "========== Configuring Oracle XE with auto password =========="
printf "Oracle1234\nOracle1234\n" | sudo /etc/init.d/oracle-xe-21c configure
echo "========== Updating listener.ora =========="
cat <<EOL | sudo tee /opt/oracle/homes/OraDBHome21cXE/network/admin/listener.ora
DEFAULT_SERVICE_LISTENER = XE
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
EOL
sudo chown -R oracle:oinstall /opt/oracle
sudo chmod -R 750 /opt/oracle
sudo chmod 640 /opt/oracle/homes/OraDBHome21cXE/network/admin/listener.ora
echo "========== Restarting Oracle Listener =========="
sudo -u oracle $ORACLE_HOME/bin/lsnrctl stop
sudo -u oracle $ORACLE_HOME/bin/lsnrctl start
echo "========== Enabling and starting Oracle service =========="
sudo systemctl enable oracle-xe-21c
sudo systemctl restart oracle-xe-21c
echo "========== Checking Oracle service status =========="
sudo systemctl status oracle-xe-21c --no-pager
echo "========== Oracle XE 21c Installation Completed! =========="
# 사용자 설정
ORACLE_USER="testuser" # 생성할 계정명
ORACLE_PASSWORD="test1234" # 계정 비밀번호
ORACLE_SID="XE" # DB 서비스명 (XE 기본값)
# SQL 실행 함수
create_user_sql=$(cat <<EOF
ALTER SESSION SET CONTAINER = XEPDB1;
CREATE USER $ORACLE_USER IDENTIFIED BY "$ORACLE_PASSWORD";
GRANT CONNECT, RESOURCE TO $ORACLE_USER;
ALTER USER $ORACLE_USER QUOTA UNLIMITED ON USERS;
GRANT CREATE SESSION TO $ORACLE_USER;
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE;
EXIT;
EOF
)
# SQL 실행 (sysdba 권한 필요)
echo "Oracle 계정 생성 중: $ORACLE_USER"
echo "$create_user_sql" | sudo -u oracle /opt/oracle/product/21c/dbhomeXE/bin/sqlplus -s / as sysdba
echo "Oracle 계정 $ORACLE_USER 생성 완료!"
SHELL
end
end
3) Vagrant up
아래 명령으로 VM 생성을 합니다.
vagrant up
vagrant 생성 이나 삭제 시에는 vagrant 에서 VM 을 종료 시키거나 VM 파일을 삭제해야할 수 있습니다.
그래서 이러한 과정을 처리하는 스크립트를 만들었습니다.
VM 생성
create_vm.bat
@echo off
set VM_NAME=oracle21c
set VM_PATH=%USERPROFILE%\VirtualBox VMs\%VM_NAME%
set VDI_FILE=%VM_NAME%.vdi
:: VirtualBox의 전체 경로로 VBoxManage 실행
set VBOXMANAGE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
if exist "%VDI_FILE%" (
%VBOXMANAGE% closemedium disk "%VDI_FILE%"
del /f /q "%VDI_FILE%"
echo %VDI_FILE% has been deleted.
) else (
echo %VDI_FILE% does not exist.
)
if exist "%VM_PATH%" (
echo %VM_NAME% already exists.
) else (
echo %VM_NAME% does not exist. Starting Vagrant VM...
vagrant halt
vagrant up
)
VM 삭제
remove_vm.bat
@echo off
set VM_NAME=oracle21c
set VM_PATH=%USERPROFILE%\VirtualBox VMs\%VM_NAME%
set VDI_FILE=%VM_NAME%.vdi
:: VirtualBox의 전체 경로로 VBoxManage 실행
set VBOXMANAGE="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
:: VM이 실행 중인지 확인하고 종료
echo Checking if VM is running...
%VBOXMANAGE% showvminfo %VM_NAME% --machinereadable | findstr "VMState=" | findstr /i "running"
if %errorlevel%==0 (
echo VM is running. Stopping the VM...
vagrant halt %VM_NAME% --force
:: 잠시 기다린 후 삭제 작업
timeout /t 5 /nobreak
) else (
echo VM is not running.
)
if exist "%VM_PATH%" (
echo Deleting "%VM_PATH%"...
vagrant destroy -f %VM_NAME%
rmdir /s /q "%VM_PATH%"
echo Deleted successfully. : "%VM_NAME%"
) else (
echo Directory does not exist: "%VM_PATH%"
)
if exist "%VDI_FILE%" (
%VBOXMANAGE% closemedium disk "%VDI_FILE%"
del /f /q "%VDI_FILE%"
echo %VDI_FILE% has been deleted.
) else (
echo %VDI_FILE% does not exist.
)
4) vagrant 에러
DHCP 에러
이 오류는 VirtualBox에서 중복된 호스트 전용 네트워크(Host-Only Network) DHCP 설정이 충돌하여 발생하는 문제입니다.
VirtualBox에서 중복된 DHCP 설정을 비활성화하거나 삭제합니다.
Vagrant 1.1편-Vagrant설치 를 참고하세요.
Vagrant 1.1편-Vagrant설치
가상환경을 구축하는 방법으로 Virtual Box, VMWare 등을 사용할 수 있습니다.Vagrant 를 사용하면 스크립트로 원하는 VM 을 쉽게 구축할 수 있습니다.또 여러개의 VM 도 쉽게 만들 수 있습니다.코딩을
javata.tistory.com
Oracle XE 다운로드 에러
Oracle XE 설치 파일은 2GB 정도 됩니다.
그래서 네크워크가 느린 환경에서는 다운로드 에러가 발생하기도 합니다.
이 경우 Oracle XE 를 직접 다운로드하여 winscp 나 ftp 같은 프로그램으로 VM 에 넣어야 할 수도 있습니다.
다음 URL 에 Oracle XE 를 다운로드 합니다.
https://www.oracle.com/database/technologies/xe-downloads.html
Oracle Database Express Edition (XE) Downloads
Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Services only provid
www.oracle.com
Rocky Linux 9 의 경우 OL8 을 다운로드합니다.
OL7 vs OL8 선택 기준
OS | 다운로드할 버전 |
Rocky Linux 9, Oracle Linux 8, RHEL 8, CentOS 8 | OL8 (올바른 선택) |
Rocky Linux 8, Oracle Linux 7, RHEL 7, CentOS 7 | OL7 (구버전) |
5) SQL Developer 설치
정성적으로 Oracle 에 연결이 가능한지 테스트하기 위해서는 Oracle 에 연결가능한 tool 로 테스트해야 합니다.
Oracle SQLDevloper 로 테스트해보겠습니다.
다음 URL 에서 다운받아서 압축을 풀고 실행하면 됩니다.
https://www.oracle.com/database/sqldeveloper/technologies/download/
Oracle SQL Developer Downloads
This archive. will work on a 32 or 64 bit Windows OS. The bit level of the JDK you install will determine if it runs as a 32 or 64 bit application. This download does not include the required Oracle Java JDK. You will need to install it if it's not already
www.oracle.com
저는 아래 버전을 다운받았습니다.
6) Oracle 연결 테스트
SQL Developer 에서 새 접속을 클릭 후에 다음과 같이 입력합니다.
테스트를 클릭하여 상태에 성공이 나오면 됩니다.
'유틸리티 > Vagrant' 카테고리의 다른 글
Vagrant 1.3편-Rocky Linux 에 MariaDB 설치 (1) | 2025.04.05 |
---|---|
Vagrant 1.1편-Vagrant설치 (1) | 2025.03.30 |