Skip to main content

Command Palette

Search for a command to run...

docker에 Oracle 21c xe 설치 및 실행

Published
3 min read
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)
  1. oracle에서 공식으로 제공하는 docker-image repo를 이용하자.

docker-images/OracleDatabase/SingleInstance at main · oracle/docker-images

  1. docker-images repo를 git clone 하기
$ git clone <https://github.com/oracle/docker-images.git>
💡
To assist in building the images, you can use the 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 빌드 할 수 있다.
💡
IMPORTANT: You will have to provide the installation binaries of Oracle Database (except for Oracle Database 18c XE, 21c XE and 23ai Free) and put them into the 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

More from this blog

[혼공후기] 재밌으면서도 알찼던 6주! 14기 활동 회고

매번 혼공 학습단을 신청해 봐야겠다고 했지만 기간 놓쳐버리기…또는 너무 바쁜 나머지 완주 못할 것 같아서 포기하다가 때마침 공부가 필요한 시기에 시간이 나서 신청하게 되었다. 공부할 새 책도 배송이 오고 완주할 생각에 기대감 상승. (+중간에 간식 먹을 생각) 참고할 수 있는 강의 영상이 있기 때문에 영상강의 보면서 책 필기 및 정리 이해한 내용을 바탕으로 블로그 정리 이런 방식으로 공부를 했다. 사실 하루에 조금씩 공부했으면 적당한 ...

Aug 23, 20252 min read

[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

14-1) 연속 메모리 할당 연속 메모리 할당 : 프로세스에 연속적인 메모리 공간을 할당하는 방식 스와핑 : 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역 스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 → 스와핑을 이용하면 프로세스들이 요구하는 메모...

Aug 16, 20259 min read
[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)

[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

12-1) 동기화란 동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행된다. ⇒ 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 필수 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 공유가 불가능한 자원의 동시 사용을 피하...

Aug 9, 20255 min read
[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)

[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

09-1) 운영체제를 알아야 하는 이유 운영체제 : 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 (시스템) 자원 : 프로그램 실행에 마땅히 필요한 요소 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재 사용자 영역 : 사용자가 이용하는 응용 프로그램이 적재되는 영역 ⇒ 메모리 공간에 주소가 겹치지 않게 프로그램 적재해 준 건? 운영체제 실행할 프로그램 메모리에 적재 실행되지 않...

Jul 26, 20257 min read
[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)

[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)

06-1) RAM의 특징과 종류 RAM 휘발성 저장 장치 실행할 대상 저장 보조기억장치 비휘발성 저장 장치 보관할 대상 저장 CPU는 보조기억장치에 직접 접근하지 못하고 RAM으로 복사하여 저장한 뒤 실행. RAM 용량이 적으면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기 때문에 RAM용량이 충분히 크면 많은 데이터를 가져와 미리 RAM에 저장하여 프로그램들을 동시에 빠르게 실행하는데 유리하다...

Jul 19, 20258 min read
[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)
W

WOW's dev archive

42 posts

언젠가 나에게 힘이 될 차곡차곡 쌓은 기록🥰