docker에 Oracle 21c xe 설치 및 실행

준비단계
git 설치
docker 설치
docker-compose 설치
설치되어 있는지 확인
git -v docker -v docker-compose -v
Oracle image 빌드
원하는 oracle 버전을 선택. 저는 아래의 버전을 설치해 보겠습니다.
oracle version :
- Oracle Database 21c (21.3.0) Express Edition (XE)
- oracle에서 공식으로 제공하는 docker-image repo를 이용하자.
docker-images/OracleDatabase/SingleInstance at main · oracle/docker-images
- docker-images repo를 git clone 하기
$ git clone <https://github.com/oracle/docker-images.git>
buildContainerImage.sh script. See below for instructions and usage. The buildContainerImage.sh script is just a utility shell script that performs MD5 checks and is an easy way for beginners to get started. Expert users are welcome to directly call docker build or podman build with their preferred set of parameters.- oracle에서 이렇게 정의를 해주고 있다. 이 파일을 사용해서 더 빠르게 image 빌드 할 수 있다.
dockerfiles/<version> folder. You only need to provide the binaries for the edition you are going to install. The binaries can be downloaded from the Oracle Technology Network, make sure you use the linux link: Linux x86-64. The needed file is named linuxx64_<version>_database.zip.- 만약에 설치하려는 파일이 Oracle Database 18c XE, 21c XE and 23ai Free 버전이 아니라면 binary 파일을 따로 설치한 후에 아래에서 설명하는 경로로 파일을 위치시킨 뒤에 설치를 진행해야 한다.
설치하기
- clone한 docker-images 폴더로 가서 아래 경로로 이동한 후에
$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles
- 아래 파일을 실행시키겠습니다.
$ ./buildContainerImage.sh -v 21.3.0 -x
- 빌드 완료

docker container 사용하기
- oracle_data 저장하고 싶은 폴더를 생성해놓고
docker run명령어 실행 아래의 옵션을 같이 적어준다.
daul-com@DAUL MINGW64 ~/Desktop/source code/oracle_data
$ docker run --name oradb21c\\
> -p 1521:1521 -p 5500:5500 \\
> -e ORACLE_PWD=1234 \\
> -v ./oradata:/opt/oracle/oradata \\
> oracle/database:21.3.0-xe
위와 같이
docker run을 사용해서 컨테이너를 실행시킬 수도 있지만 postgreSQL에서 설정한 것과 같이 docker compose 파일을 생성한 뒤에 컨테이너를 띄워보겠습니다.
docker compose
services:
oradb21c:
image: oracle/database:21.3.0-xe
restart: always
container_name: oradb21c
ports:
- 1521:1521
env_file:
- ora_env
volumes:
- ./oradata:/opt/oracle/oradata
privileged: true
// oradb21c_env
ORACLE_PWD=1234
ORACLE_SID=xe
ora_env 파일을 만들어 해당 sys 계정에 대한 pwd와 sid를 저장해둔다.
-d를 사용하여 백그라운드로 실행
docker compose up -d
- 실행되고 있는 container를 정지시키고 삭제하기
docker compose down
- 정상적으로 작동한다면 아래의 메시지가 보일 것이다. 그럼 이제 데이터베이스에 접속해 보자.

데이터베이스 연결하기
- 만들어놓은 컨테이너를 실행시켜놓고 접속을 한다.
winpty doker exec -it oradb21c bash
sqlplus sys/1234@//localhost:1521/XE as sysdba
를 입력해주면 접속 완료!
sqlplus sys/<비밀번호>@//localhost:1521/XE as sysdba
sqlplus system/<비밀번호>@//localhost:1521/XE
sqlplus pdbadmin/<비밀번호>@//localhost:1521/XEPDB1
oracle developer로 확인하기
- 눈으로 확인하기 위하여 oracle developer를 설치했다.
Oracle SQL Developer Downloads | Oracle 대한민국

- 사용자 계정 만들기
CREATE USER [아이디] IDENTIFIED BY [패스워드];
에러
오류 보고 - ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.
[Oracle] Oracle XE에서 사용자 생성 오류, ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. invalid common user or role name
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
터미널에서 접속할 때
sqlplus wowssun/1234@//localhost:1521/myboard
sqlplus [사용자이름]/[비밀번호]@//[접속할 데이터베이스 주소]
참고자료
Oracle Database 18c XE docker 설치
docker-images/OracleDatabase/SingleInstance at main · oracle/docker-images
Oracle Database 18c XE, 21c XE and 23ai Free 버전이 아니면 binary 설치한뒤에 경로로 설정.
![[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1755441066842%2F4d3a042e-e395-4e14-84c2-725aeabc56ed.png&w=3840&q=75)
![[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1754833767926%2F85ea771d-0416-409a-82d9-bcc62b92cf17.png&w=3840&q=75)
![[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753626546414%2F943e9f66-8c81-4bac-83b6-5797bd83293c.png&w=3840&q=75)
![[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753020566648%2Fc2832934-e4d5-45c1-87c8-a1d5f27b2169.png&w=3840&q=75)