본문 바로가기

Database/Oracle

[DB] Oracle Docker 이미지로 CDB, PDB 기반 설치하기

오라클 12c버전부터 Container Database, Pluggable Database 개념이 도입되어 하나의 Oracle Databse Instance에서 여러개의 스키마를 격리하여 설치할수 있게 되었다.

 

Oracle 공식 Repository에서는 Docker Image를 제공하고 있으므로 이를 이용해서 Oracle을 설치해 보도록 한다.

 

https://container-registry.oracle.com 

위 주소가 공식 Repository 주소이다.

 

접속을 한 후에 Oracle 계정으로 Sign in을 한다. (계정이 없으면 생성 필요)

 

계정으로 로그인 한 후에 Database -> enterprise를 선택한 후 우측에 약관 동의에 동의를 수행한다. 이를 안하면 docker login시에 계속 계정 에러가 발생하게 된다.

 

약관 동의 후 enterprise를 클릭하면 docker image 실행법과 하단에 주요 릴리즈 tag가 표시되어 있다. amd64 기반 pc에 오라클 19c를 설치하기 위해 아래 command를 사용하도록 한다.

 

윈도우wsl에서 위 커맨드를 실행하면 권한 에러가 난다. docker login을 우선 해야 아래 Repository를 사용할 수 있다.

 

Auth Token생성을 위해서 상단 우측 로그인 아이콘을 선택하면 Auth Token 항목이 나온다. 거기서 Token생성하고 이후 docker login시 사용하도록 한다.

 

위에서 발급한 Auth Token을 비밀번호로 입력하면 Docker Login이 완료된다.

 

Docker Login이후 Docker pull을 해보면 성공적으로 다운로드가 된다.

 

Docker run으로 컨테이너를 실행해 본다. 필자는 기존에 Oracle 12c 버전을 사용중이라서 이번 19c는 호스트 Port를 1522로 변경해주었다.

docker run -dit --name oracle-19c \
	-p 1522:1521 \
    -e ORACLE_SID=ORCLCDB \
    -e ORACLE_PDB=ORCLPDB1 \
    -e ORACLE_PWD=1234 \
    -e ORACLE_CHARACTERSET=AL32UTF8 \
    container-registry.oracle.com/database/enterprise:19.3.0.0

 

Docker run 명령을 수행 후 Docker logs -f oracle-19c명령어로 실행 로그를 확인한다.

root@Kindlove:/mnt/c/Users/skkkm# docker run -dit --name oracle-19c \
        -p 1522:1521 \
    -e ORACLE_SID=ORCLCDB \
    -e ORACLE_PDB=ORCLPDB1 \
    -e ORACLE_PWD=1234 \
    -e ORACLE_CHARACTERSET=AL32UTF8 \
    container-registry.oracle.com/database/enterprise:19.3.0.0
b90aac7599449f2282a5614bcaed213fc93fae7f36908f043a56a7cea51db13a
root@Kindlove:/mnt/c/Users/skkkm# docker logs -f oracle-19c
[2025:11:04 04:20:07]: Acquiring lock .ORCLCDB.create_lck with heartbeat 30 secs
[2025:11:04 04:20:07]: Lock acquired
[2025:11:04 04:20:07]: Starting heartbeat
[2025:11:04 04:20:07]: Lock held .ORCLCDB.create_lck
ORACLE EDITION: ENTERPRISE

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 04-NOV-2025 04:20:07

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/b90aac759944/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                04-NOV-2025 04:20:08
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/b90aac759944/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
8% complete
Copying database files

(중략...)


DONE: Executing user defined scripts

The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB1(3):
ORCLPDB1(3):XDB initialized.
2025-11-04T04:35:17.589489+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE;
2025-11-04T04:35:17.605782+00:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
   ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed:    ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE

XDB initialized.

 

오라클 설치가 완료되면 아래와 같이 Docker 내부로 들어가서 Sqlplus접속 후 orclpdb1으로 세션 변경 및 pdbs현황을 조회한다. 아래와 같이 pdbs정보가 출력되면 성공적으로 설치완료된 것이다.

 

-- The End --