개발이나 테스트 환경에서 오라클 데이터베이스를 구축할 때, 무거운 설치 파일을 다운로드하고 세팅하느라 고생하신 적 있으신가요? 이제는 컨테이너 기술을 활용해 단 몇 분 만에 데이터베이스를 띄울 수 있습니다.
오라클은 기존의 XE (Express Edition) 버전을 단종시키고, 더욱 강력해진 기능(AI Vector Search, JSON Relational Duality 등)을 포함한 Oracle Database 23ai Free 버전을 무료로 제공하고 있습니다.
오늘은 Docker 대신 보안이 뛰어나고 가벼운 Podman과 Podman Compose를 활용하여 Oracle 23ai Free 환경을 구축하는 방법을 알아보겠습니다.
사전 준비 (Prerequisites)
- OS: Rocky Linux, CentOS, RHEL 8/9 등 (또는 Ubuntu)
- 필수 패키지: podman, podman-compose 설치 완료
- 여유 메모리(RAM) 최소 2GB 이상 권장
Step 1. 작업 디렉터리 및 볼륨 폴더 생성
컨테이너가 삭제되더라도 데이터베이스의 데이터가 날아가지 않도록(영구 보존), 호스트 PC에 데이터를 저장할 폴더를 만들어야 합니다.
원하는 작업 공간으로 이동 후 아래 명령어를 실행하세요.
# oracle23 ai 를 설치할 계정생성
adduser -d /mnt/hdd/ora23ai ora23ai
su - ora23ai
# 데이터가 영구 저장될 볼륨 폴더 생성
mkdir data_ora23ai
#쓰기권한 설정
chmod 777 data_ora23ai
Step 2. docker-compose.yml 파일 작성
podman-compose는 기존의 docker-compose.yml 파일 포맷을 그대로 지원합니다. 방금 만든 oracle23ai 폴더 안에 파일을 생성합니다.
- vi docker-compose.yml
services:
oracle23ai:
image: container-registry.oracle.com/database/free:latest
container_name: oracle-23ai
ports:
- "1523:1521"
environment:
# SYS, SYSTEM, PDBADMIN 계정의 공통 비밀번호로 설정됩니다.
ORACLE_PWD: "Oracle23ai"
volumes:
# :z 옵션은 RHEL/Rocky Linux의 SELinux 환경에서 권한 오류를 방지하는 필수 설정입니다.
- ./data_ora23ai:/opt/oracle/oradata:z
healthcheck:
test: ["CMD", "/opt/oracle/checkDBStatus.sh"]
interval: 30s
timeout: 10s
retries: 5
start_period: 2m
💡 주요 설정 설명
- image: 오라클 공식 컨테이너 레지스트리에서 제공하는 최신 23ai Free 이미지를 사용합니다.
- ORACLE_PWD: 관리자 계정의 비밀번호입니다. (보안상 복잡하게 설정하시는 것을 권장합니다.)
- :z 옵션: Podman을 사용할 때 호스트의 폴더를 마운트하면 Permission Denied 에러가 자주 발생합니다. 끝에 :z를 붙이면 Podman이 알아서 SELinux 레이블을 조정하여 권한 문제를 해결해 줍니다.
Step 3. 컨테이너 실행하기
#컨테이너를 백그라운드(-d)에서 실행
podman compose up -d
# 실시간 로그 확인
podman logs -f oracle-23ai
로그 마지막 부분에 DATABASE IS READY TO USE! 라는 메시지가 출력되면 정상적으로 구축이 완료된 것입니다. (Ctrl+C를 눌러 로그 화면에서 빠져나옵니다.)
- 컨테이너 실행중 아래와 같은 에러가 발생 할 경우 해결 방법에 따라 진행 합니다.
첫번 째 아래 에러는 일반 사용자(Rootless) 권한으로 Podman을 실행할 때, 사용자 DBUS 세션을 찾지 못해 발생하는 경고 내용입니다. 해결 책은 간단합니다. 출력 메시내용을 콘솔창에서 수행 하면 됩니다.
- 두번째 에러는 docker-compose.yml 을 한글 파일로 변환 하면 됩니다.
정상 설치가 되면 오라클 컨테이너가 기동되어 있는것을 확인 할수 있습니다.

정상 설치시 아래와 같이 설치 된다.
- DATABASE IS READY TO USE! 출력확인

Step 4. 데이터베이스 접속 테스트
구축이 완료되었으니 DBeaver, SQL Developer 또는 터미널을 통해 접속해 봅니다.
접속 정보 요약 (중요)
Oracle 23ai Free 버전은 기존 XE와 달리 서비스명(Service Name)이 다릅니다.
- Host: localhost (또는 서버의 IP)
- Port: 1523
- Service Name (PDB): FREEPDB1 (기존 XE처럼 XE를 입력하면 접속 안 됩니다!)
- User: SYS (권한: SYSDBA) 또는 SYSTEM
- Password: docker-compose.yml에서 설정한 ORACLE_PWD 값
💻 터미널에서 직접 접속해 보기 (SQL*Plus)
컨테이너 내부에 내장된 SQL*Plus를 이용해 바로 쿼리를 날려볼 수도 있습니다.
# SYS 계정으로 접속
podman exec -it oracle-23ai sqlplus sys/Oracle23ai@FREEPDB1 as sysdba
# or 컨테이너에 접속후 sqlplus 수행
#podman exec -it oracle-23ai bash
#sqlplus sys/Oracle23ai@FREEPDB1 as sysdba
# 버전 확인 쿼리 실행
SQL> SELECT banner FROM v$version;
정상적으로 Oracle Database 23ai Free 관련 정보가 출력된다면 성공입니다!

🧹 (참고) 컨테이너 중지 및 삭제
사용을 마치고 컨테이너를 내리고 싶을 때는 아래 명령어를 사용합니다.
# 중지 및 컨테이너 삭제 (oradata 폴더의 데이터는 그대로 유지됨)
podman compose down'05.DB > Oracle' 카테고리의 다른 글
| [오라클] TableSpace 사용량 조회 (0) | 2022.10.18 |
|---|---|
| [Oracle] 오라클 초기화 파라미터 파일(spfile,pfile) (0) | 2022.04.20 |
| [Oracle] 언어셋 변경 NLS_LANGUAGE (0) | 2022.04.13 |
| [Oracle]오라클 Sample Schema 생성 (0) | 2022.04.11 |
| [Docker] Oralce 19c 환경설정 (0) | 2022.03.24 |