Oracle Database의 기본 개념과 설치 방법을 알아봅니다.
Oracle Database란?
Oracle Database는 세계에서 가장 널리 사용되는 상용 관계형 데이터베이스 관리 시스템(RDBMS)입니다.
대규모 엔터프라이즈 환경에서 높은 안정성과 성능을 제공합니다.
Oracle vs MySQL 비교
| 항목 |
Oracle |
MySQL |
| 개발사 |
Oracle Corporation |
Oracle Corporation (인수) |
| 라이선스 |
상용 (Enterprise/Standard) |
GPL + 상용 이중 라이선스 |
| 가격 |
고가 (코어당 과금) |
무료 (Community) |
| 무료 버전 |
XE (Express Edition) |
Community Edition |
| 트랜잭션 |
강력한 MVCC |
InnoDB 기반 MVCC |
| PL/SQL |
지원 (강력) |
미지원 (Stored Procedure만) |
| RAC (클러스터) |
지원 |
미지원 |
| 파티셔닝 |
기본 지원 |
Enterprise만 지원 |
| 시퀀스 |
SEQUENCE 객체 |
AUTO_INCREMENT |
Oracle 에디션
| 에디션 |
특징 |
용도 |
| Enterprise Edition (EE) |
모든 기능 포함, RAC/파티셔닝 등 |
대규모 운영 환경 |
| Standard Edition (SE2) |
기본 기능, 최대 2소켓 |
중소규모 환경 |
| Express Edition (XE) |
무료, 리소스 제한 (12GB 데이터, 2GB RAM) |
학습, 개발, 소규모 |
| Personal Edition |
단일 사용자 |
개발/테스트 |
이 강좌에서는 무료로 사용 가능한 Oracle XE를 기준으로 설명합니다.
설치
Windows
Oracle XE 설치
- Oracle XE 다운로드 페이지에서 설치 파일 다운로드
OracleXE213_Win64.zip 압축 해제 후 setup.exe 실행
- 설치 경로 지정 (기본:
C:\app\oracle)
- SYS/SYSTEM 관리자 비밀번호 설정
- 설치 완료 후 서비스 자동 등록
설치 확인
-- SQL*Plus로 접속
sqlplus sys/비밀번호 as sysdba
-- 버전 확인
SELECT * FROM v$version;
-- 현재 인스턴스 확인
SELECT instance_name, status FROM v$instance;
Mac / Linux
Docker를 이용한 설치 (권장)
Oracle은 Mac을 공식 지원하지 않으므로 Docker를 사용합니다.
# Oracle XE 21c 컨테이너 실행
docker run -d \
--name oracle-xe \
-p 1521:1521 \
-p 5500:5500 \
-e ORACLE_PWD=OraclePass123 \
-v oracle-data:/opt/oracle/oradata \
container-registry.oracle.com/database/express:21.3.0-xe
# 컨테이너 접속
docker exec -it oracle-xe sqlplus sys/OraclePass123@localhost:1521/XE as sysdba
Linux (RPM 설치)
# Oracle XE RPM 설치 (Oracle Linux / CentOS)
sudo yum install oracle-database-preinstall-21c
sudo yum localinstall oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
# 초기 설정
sudo /etc/init.d/oracle-xe-21c configure
Oracle 아키텍처 기본 개념
주요 용어
| 용어 |
설명 |
| Instance |
메모리(SGA) + 백그라운드 프로세스 |
| Database |
물리적 파일 (데이터파일, 리두로그, 컨트롤파일) |
| SGA |
System Global Area, 공유 메모리 영역 |
| PGA |
Program Global Area, 세션별 메모리 |
| Tablespace |
논리적 저장 공간 단위 |
| Schema |
사용자가 소유한 객체(테이블, 뷰 등)의 집합 |
| SID |
System Identifier, 인스턴스 식별자 |
| Service Name |
데이터베이스 서비스 이름 |
Oracle vs MySQL 용어 매핑
| Oracle |
MySQL |
설명 |
| Schema (= User) |
Database |
논리적 데이터 그룹 |
| Tablespace |
없음 (파일 기반) |
물리적 저장 공간 |
| SEQUENCE |
AUTO_INCREMENT |
자동 증가 번호 |
| ROWNUM / ROW_NUMBER |
LIMIT |
행 수 제한 |
| NVL() |
IFNULL() |
NULL 대체 |
| SYSDATE |
NOW() |
현재 날짜/시간 |
| DUAL |
불필요 |
더미 테이블 |
| PL/SQL |
Stored Procedure |
절차적 SQL |
| SQL*Plus |
mysql CLI |
명령줄 도구 |
접속 방법
SQL*Plus (CLI)
# SYS 관리자 접속
sqlplus sys/비밀번호 as sysdba
# 일반 사용자 접속
sqlplus 사용자명/비밀번호@호스트:포트/서비스명
sqlplus devuser/pass123@localhost:1521/XE
# 원격 접속
sqlplus devuser/pass123@192.168.1.100:1521/ORCL
접속 문자열 (TNS)
-- tnsnames.ora 설정
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
GUI 도구
| 도구 |
특징 |
가격 |
| SQL Developer |
Oracle 공식 도구, 무료 |
무료 |
| DBeaver |
다중 DB 지원, 범용 |
무료 (Community) |
| DataGrip |
JetBrains, 강력한 자동완성 |
유료 |
| Toad for Oracle |
전통적인 Oracle 전용 도구 |
유료 |
| Orange |
국산 Oracle 전용 도구 |
유료 |
서비스 관리
| 기능 |
Windows |
Linux |
| 시작 |
net start OracleServiceXE |
sudo systemctl start oracle-xe-21c |
| 중지 |
net stop OracleServiceXE |
sudo systemctl stop oracle-xe-21c |
| 리스너 시작 |
lsnrctl start |
lsnrctl start |
| 리스너 중지 |
lsnrctl stop |
lsnrctl stop |
| 리스너 상태 |
lsnrctl status |
lsnrctl status |
-- SQL*Plus에서 DB 시작/종료
STARTUP;
SHUTDOWN IMMEDIATE;
관련된 글 (oracle > lecture-oracle)