Skip to content

📌 구 교재용. 이 문서는 1_시험준비_SQLP합격, 2_중급실전_딥다이브, 3_심화_성능고도화가 참조하는 단일 컨테이너(oracle-free) 환경 안내다. 『튜너의 1년』 본편은 컨테이너 4대 구성을 쓴다(00_자료준비/README.md). 본편의 ora-hanorder가 이 문서의 oracle-free에 해당하며, 계정과 포트, 서비스명은 같다.

00. Oracle 실습 환경 구축 가이드 ​

SQLP는 실행계획을 직접 보고 튜닝하는 시험이다. 그래서 실습 환경에서 꼭 할 수 있어야 하는 일은 "쿼리를 실행하고 실행계획과 I/O 통계를 확인하는 것"이다. 아래 3가지 옵션 중 하나를 고른다.

옵션설치실행계획/AUTOTRACE추천 대상
A. Oracle Live SQL무설치(웹)△ (Explain Plan만 제한적)1~2주차 문법 연습용
B. Docker + 23ai Free ⭐5분✅ 전부 가능튜닝 실습(3주차~) 강력 추천
C. Windows 네이티브 설치30분+✅ 전부 가능Docker가 어려운 경우

권장 조합: 빨리 시작하려면 A로 1~2주차를 시작하되, 3주차(튜닝) 전까지는 반드시 B나 C를 준비한다. 실행계획 실습이 안 되면 과목Ⅲ 학습 효과가 절반으로 떨어진다.


옵션 A. Oracle Live SQL (무설치, 가장 빠름) ​

  1. https://livesql.oracle.com에 접속해 오라클 무료 계정으로 로그인한다.
  2. SQL Worksheet에 쿼리를 붙여 넣고 실행한다(Ctrl+Enter).
  3. 00_sample_schema_setup.sql 내용을 붙여 넣으면 실습 스키마를 만들 수 있다.

한계: 세션이 일정 시간이 지나면 초기화되고, SET AUTOTRACE/DBMS_XPLAN.DISPLAY_CURSOR 같은 런타임 통계 확인이 제한된다. 그래서 문법과 결과를 확인하기에는 충분하지만 튜닝 실습에는 맞지 않는다.


옵션 B. Docker + Oracle Database 23ai Free ⭐ (튜닝 실습 추천) ​

B-1. Docker Desktop 설치 ​

B-2. Oracle 23ai Free 컨테이너 실행 ​

가장 가볍고 빠른 커뮤니티 이미지(gvenzl/oracle-free)를 쓴다.

bash
docker run -d \
  --name oracle-free \
  -p 1521:1521 \
  -e ORACLE_PASSWORD=oracle \
  -e APP_USER=sqlp \
  -e APP_USER_PASSWORD=sqlp \
  gvenzl/oracle-free:23-slim
  • 최초 1회는 이미지를 내려받느라 몇 분 걸린다.
  • 진행 상황은 docker logs -f oracle-free로 확인한다. DATABASE IS READY TO USE!가 보이면 완료다.
  • 이후 시작과 정지: docker start oracle-free / docker stop oracle-free

공식 이미지를 쓰려면 docker pull container-registry.oracle.com/database/free:latest를 실행한다.

B-3. 접속 정보 (이 가이드 전체에서 사용) ​

항목값
Hostlocalhost
Port1521
Service (PDB)FREEPDB1
관리자system / oracle
실습 계정sqlp / sqlp ← 평소에는 이 계정을 쓴다

B-4. ★ sqlp에 튜닝 측정용 권한 부여 (Docker는 이 단계가 필수!) ​

gvenzl 이미지가 만든 APP_USER(sqlp)에는 기본 권한만 있다. 이대로는 DBMS_XPLAN.DISPLAY_CURSOR/AUTOTRACE가 User has no SELECT privilege on V$SQL로 막힌다. SYS로 한 번 권한을 준다.

bash
docker exec -it oracle-free sqlplus sys/oracle as sysdba
sql
ALTER SESSION SET CONTAINER = FREEPDB1;
GRANT SELECT_CATALOG_ROLE, SELECT ANY DICTIONARY, ALTER SESSION TO sqlp;
-- (선택) AUTOTRACE 통계가 계속 막히면: @?/sqlplus/admin/plustrce.sql  후  GRANT PLUSTRACE TO sqlp;

동봉 스크립트 00_sqlp_권한부여.sql로 한 번에 처리해도 된다. ★ 권한을 준 뒤에는 sqlp 세션에 다시 접속해야 롤이 활성화된다(그다음 00_환경점검.sql을 다시 실행한다).


옵션 C. Windows 네이티브 설치 ​

  1. https://www.oracle.com/database/technologies/oracle-database-software-downloads.html에서 Oracle Database 23ai Free → Windows (64-bit) zip을 내려받는다.
  2. 압축을 풀고 setup.exe를 관리자 권한으로 실행한 뒤, 안내에 따라 설치한다.
    • 시스템 요구 사항: RAM 8GB+, 디스크 50GB+ 권장.
  3. 설치 중에 정한 비밀번호로 system 계정에 접속한다.
  4. 실습 계정을 만든다(아래 SQL을 system으로 1회 실행).
sql
ALTER SESSION SET CONTAINER = FREEPDB1;
CREATE USER sqlp IDENTIFIED BY sqlp;
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO sqlp;
-- 실행계획/AUTOTRACE/트레이스 실습용 권한
GRANT SELECT_CATALOG_ROLE TO sqlp;
GRANT SELECT ANY DICTIONARY TO sqlp;
GRANT ALTER SESSION TO sqlp;

클라이언트 도구 (옵션 B·C 공통) ​

쿼리를 작성하고 실행할 도구를 1개 고른다.

SQL Developer (GUI, 입문 추천) ​

  1. https://www.oracle.com/database/sqldeveloper/technologies/download/에서 내려받는다.
  2. 새 접속을 만든다.
    • Name: SQLP_local, Username: sqlp, Password: sqlp
    • Hostname: localhost, Port: 1521, Service name: FREEPDB1
  3. 실행계획 보기:
    • 쿼리를 선택한 뒤 F10 = Explain Plan(예상 실행계획)
    • F6 = Autotrace(실제 실행 + 통계) ← 튜닝 실습의 핵심 버튼

SQLcl (CLI, 가볍고 강력) ​


★ 실행계획 확인 3종 세트 (반드시 익혀 둔다) ​

3주차부터 매주 쓰는 핵심 명령이다. 미리 손에 익혀 둔다.

① 예상 실행계획 — DBMS_XPLAN.DISPLAY (가장 기본) ​

sql
EXPLAIN PLAN FOR
SELECT * FROM emp WHERE deptno = 10;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());

② 실제 실행계획 + 행수 통계 — GATHER_PLAN_STATISTICS (튜닝 진단의 정석) ​

sql
SET SERVEROUTPUT OFF
SELECT /*+ GATHER_PLAN_STATISTICS */ *
FROM   emp WHERE deptno = 10;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT => 'ALLSTATS LAST'));
-- E-Rows(예상) vs A-Rows(실제) 차이로 통계 정확도/비효율을 진단합니다.

③ AUTOTRACE — 한 번에 계획 + I/O(consistent gets) 통계 ​

SQL*Plus / SQLcl:

sql
SET AUTOTRACE ON
SELECT * FROM emp WHERE deptno = 10;
-- 'consistent gets'(논리적 블록 읽기) 수치가 튜닝 전/후 비교의 핵심 지표입니다.

SET AUTOTRACE가 권한 오류를 내면 system으로 GRANT PLUSTRACE TO sqlp;를 실행한 뒤 (PLUSTRACE 롤이 없으면 @?/sqlplus/admin/plustrce.sql을 먼저 실행한다) 다시 시도한다. SQL Developer 사용자는 그냥 F6을 쓰면 된다.


다음 단계 ​

  1. ☐ 환경(옵션 A/B/C 중 하나) 준비 + (Docker라면) B-4 권한 부여
  2. ☐ 스키마 A: sqlp로 00_sample_schema_setup.sql 실행
  3. ☐ 스키마 B(SQL BOOSTER): sqlp로 11_…/실습/00_SQLBOOSTER_실습스키마_setup.sql 실행 (T_ORD_BIG 100만 건, 대용량 튜닝·Hero용)
  4. ☐ 00_환경점검.sql 실행 → 정상 확인
  5. ☐ 1_시험준비_SQLP합격/01주차…로 이동

📚 모든 데이터셋(A~E)의 위치, 빌드, ERD, "Hero가 쓰는 파일" 정보는 00_데이터셋_종합안내.md 한 문서에 정리해 두었다.


실습 데이터셋 — 전체 지도 ​

A·B를 포함한 5종 전체의 위치·규모·ERD·"Hero가 쓰는 파일"·설치 순서는 00_데이터셋_종합안내.md 문서에 정리되어 있다.

기본 실습은 A + B(SQL BOOSTER T_ORD_BIG 100만)면 충분하고, 심화(Hero)도 이 둘을 쓴다. 더 다양한 도메인으로 연습하려면 다음 데이터셋을 전용 계정에 따로 설치한다.

데이터셋계정빌드ERD·조감도
A 기본 샘플(SCOTT+주문)sqlp00_sample_schema_setup.sqlERD
B SQL BOOSTER 쇼핑몰sqlpSQLBOOSTER setupERD
C 튜닝에센셜(버거·CF·파티션)devREADMEERD
D SQL파워업(유통 18테이블)pupREADMEERD
E 이커머스(정규화 30테이블)ecommerce구축가이드ERD