윈도우 환경에서 Docker를 이용해 Oracle Database를 설치하기전에 먼저 Windows에서 WSL2(Windows Subsystem for Linux 2) 와 Docker Desktop 설치가 먼저 필요합니다.
1. Oracle Docker 이미지 다운로드 및 실행
1) Oracle Database Docker 이미지 받기
Docker Hub에는 공식 Oracle 이미지가 없지만, Oracle의 컨테이너 레지스트리에서 직접 받을 수 있습니다.
// docker search 명령어로 image 검색
docker search [image명]
docker search oracle
2) Oracle Container Registry에 로그인
Oracle Container Registry(https://container-registry.oracle.com/)에 접속 후 로그인
Database → Enterprise를 찾아 Accept License Agreement 클릭
3) docker login을 사용해서 Oracle 레지스트리에 로그인
C:\>docker login container-registry.oracle.com
Username: 사용자 오라클 아이디
Password: 사용자 오라클 패스워드
Login Succeeded
4) docker image pull 및 실행(run)
docker run -d --name docker-oracle
-p 1521:1521 -p 5500:5500
-e ORACLE_SID=ORCL
-e ORACLE_PDB=ORCLPDB1
-e ORACLE_PWD=admin1234
container-registry.oracle.com/database/enterprise:21.3.0.0
설명
- --name docker-oracle → 컨테이너 이름 지정
- -p 1521:1521 → Oracle Listener 포트 연결
- -p 5500:5500 → Oracle Enterprise Manager 포트 연결
- -e ORACLE_SID=ORCL → 기본 SID 설정
- -e ORACLE_PDB=ORCLPDB1 → 기본 PDB 이름 설정
- -e ORACLE_PWD=admin1234 → 시스템 관리자 계정 비밀번호 설정
- container-registry.oracle.com/database/enterprise:21.3.0 → 사용할 이미지
실행결과
C:\>docker run -d --name docker-oracle -p 1521:1521 -p 5500:5500 -e ORACLE_SID=ORCL -e ORACLE_PDB=ORCLPDB1 -e ORACLE_PWD=admin1234 container-registry.oracle.com/database/enterprise:21.3.0.0
locally
21.3.0.0: Pulling from database/enterprise
7c8051acdded: Pull complete
e8e925221939: Pull complete
588ca0fc7bfb: Pull complete
ae20812c4f08: Pull complete
d9825b0e2b89: Pull complete
a6246436cc89: Pull complete
f85ecbfecac3: Pull complete
c5203ee57353: Pull complete
706e9c3af817: Pull complete
8901a4ae8c19: Pull complete
a33ea7dcd68f: Pull complete
998fd4ce9410: Pull complete
d08d9a55c68d: Pull complete
a9475d76f917: Pull complete
bd9ddc54bea9: Pull complete
12e12fcd89bc: Pull complete
227a8fd94a56: Pull complete
8b6232f72c10: Pull complete
9af4cdee8387: Pull complete
Digest: sha256:c5ad975902cfe523a4ac9f046ec87cd0fd41c24118651ca0e7194f736ae4e3c7
Status: Downloaded newer image for container-registry.oracle.com/database/enterprise:21.3.0.0
17703b1f72f276429919f282619a3650df0f31c354d6cd9ed70544b35bb1fc6a
5) 컨테이너 정상 실행 확인 및 로그 확인
컨테이너가 정상적으로 실행되고 있는지 확인
docker ps
컨테이너 로그 확인
docker logs -f [컨테이너명]
docker logs -f docker-oracle
2. Oracle 접속 방법
SQLPlus로 접속
docker exec -it [컨테이너명] sqlplus [계정명]/[패스워드]@//[호스트]:[포트]/[PDB] as sysdba
docker exec -it docker-oracle sqlplus sys/admin1234@//localhost:1521/ORCLPDB1 as sysdba
만약, 아래와 같이 아이디와 비밀번호가 유효하지 않다는 에러가 나타난다면
PS C:\Users\maest> docker exec -it docker-oracle sqlplus sys/admin1234@//localhost:1521/ORCLPDB1 as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Sat Mar 8 01:39:41 2025
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
Enter user-name: sys
Enter password:
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Enter user-name: sysdba
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied
다음 명령어를 실행 후 다시 접속을 시도 해봅시다
docker exec [컨테이너명] ./setPassword.sh [패스워드]
docker exec docker-oracle ./setPassword.sh admin1234
Oracle SQL Developer로 접속
SQL Developer나 DBeaver 등을 이용해 다음과 같이 접속 가능합니다.
계정 만들기
1. SQLPlus로 sys계정으로 접속
C:\>docker exec -it docker-oracle sqlplus sys/admin1234@//localhost:1521/ORCLPDB1 as sysdba
2. 계정을 생성합니다
SQL> CREATE USER [계정명] IDENTIFIED BY [패스워드];
ex) CREATE USER lucky IDENTIFIED BY mypassword;
3. 권한 부여
SQL> GRANT [부여권한] TO [계정명]
ex) GRANT CONNECT, RESOURCE TO lucky;
4. 테이블 스페이스 할당량 세팅
SQL> ALTER USER [계정명] QUOTA [할당량] ON USERS;
ex) ALTER USER lucky QUOTA UNLIMITED ON USERS; -- 무제한
ALTER USER lucky QUOTA 500M ON USERS; -- 500MB로 제한
ALTER USER lucky QUOTA 2G ON USERS; -- 2GB로 제한
4. 정리
Docker Hub에는 공식 Oracle 이미지가 없지만, Oracle의 컨테이너 레지스트리에서 직접 받을 수 있습니다.
docker login을 사용해서 Oracle 레지스트리에 로그인 후 docker를 통해 image를 pull하고
SQLPlus를 통해 sysdba 계정으로 로그인 후 신규 계정을 생성하여 Oracle을 사용 할 수 있습니다.