[Docker] Oracle-XE-11 사용 방법

식빵·2025년 9월 30일
0

docker reference

목록 보기
13/13

이번 글에서는 oracle 11 버전을 container 로 띄우는 방법을 순차적으로 알아보겠습니다.


🍞 사용할 이미지 선정

docker search 를 사용해서 star 를 많이 받은 이미지를 조회해봅니다.

2개가 잡히는데 gvenzl/oracle-xe 이미지를 사용하겠습니다.


참고:
컨테이너 신규 생성 시, oracle 계정을 하나 새로 생성할 겁니다.
id/pw : toast/toast
제가 지금부터 작성한 쿼리나 실행 명령어에서 지속적으로 사용되니 유의하세요.


🍞 sql 작성

초기에 실행해야될 SQL 을 파일로 미리 작성합니다.
이 파일들은 docker 로 oracle 이 띄워지고 난 후에 실행됩니다.


0_init.sql 파일작성

-- 1. 사용자(=스키마) 생성
CREATE USER toast IDENTIFIED BY toast;

-- 2. 필요한 권한 부여 (접속 및 오브젝트 생성 권한 등등...)
GRANT CREATE SESSION TO toast;
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO toast;
GRANT CONNECT, RESOURCE TO toast;
GRANT UNLIMITED TABLESPACE TO toast; 
GRANT SELECT_CATALOG_ROLE TO toast;

-- 3. 커넥션 변경
CONNECT toast/toast;

-- 4. 샘플 테이블 생성
CREATE TABLE sample_tbl (
  id NUMBER,
  name VARCHAR2(200)
)
ALTER TABLE SAMPLE_TBL
    ADD CONSTRAINT PK_SAMPLE_TBL PRIMARY KEY (ID);

1_data.sql 파일작성

-- connect 구하고 시작, 이러면 toast 스키마 아래를 기본으로 object 가 생성된다.
CONNECT toast/toast;

-- 샘플 테이블에 insert
INSERT INTO SAMPLE_TBL (ID, NAME) VALUES (1, 'sample_name');



🍞 Dockerfile 작성 및 빌드/실행

Dockerfile 내용은 다음과 같습니다.

FROM gvenzl/oracle-xe:11.2.0.2

ENV LANG=C.UTF-8
ENV ORACLE_PASSWORD=system

ADD 0_init.sql /container-entrypoint-initdb.d
ADD 1_data.sql /container-entrypoint-initdb.d

이후 Dockerfile 과 앞서 작성한 *.sql 파일들을 한 디렉토리에 모으고,
아래처럼 명령어를 입력합니다.

# 빌드 실행하여 이미지 (oracle-xe-11) 생성
docker build -t oracle-xe-11 .

# 컨테이너 실행
docker run -p 61521:1521 -d --name oracle-xe-11 oracle-xe-11

# 실행되는 컨테이너 로그 조회
docker logs -f oracle-xe-11

이러면 아래처럼 로그가 보일겁니다.
작성한 sql 파일이 정상적으로 실행되는 것을 알 수 있습니다.



🍞 sqlplus 테스트

마지막으로 컨테이너 내부에 있는 sqlplus 을 테스트해보겠습니다.
먼저 로그인을 해보죠.

docker exec -it oracle-xe-11 sqlplus toast/toast@localhost:1521/XE

접속후 아래처럼 가볍게 조회해보시길 바랍니다.

-- 현재 사용자 확인
SHOW USER;

-- 현재 접속된 데이터베이스 정보
SELECT * FROM global_name;

-- 내 스키마의 테이블 목록
SELECT table_name FROM user_tables;

-- 내 인덱스 목록
SELECT index_name, table_name FROM user_indexes;

-- 권한 확인
SELECT * FROM session_privs;



🍞 참고

1. DBeaver 로 접속

DATABASE 명칭을 XE 로 꼭 바꾸시고,
나머지 PORT, Username, Password 는 여러분들이 지정한 걸로 하면 됩니다~
제가 작성한 거 그대로 따라왔으면 username/password = toast/toast 이고
Port 번호는 61521 입니다.


2. jdbc URL 작성 방식

jdbc:oracle:thin:@localhost:61521:XE

이상으로 간단하게 oracle container 를 설정 및 실행하는 방법을 알아봤습니다.

profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글