본문 바로가기
IT/Docker.K8S

[Docker] Oracle (19.3 C)

by 성준하이 2023. 11. 10.
반응형

이번 포스팅에서는 Oracle을 사용하기 위한 docker 를 만드는 포스팅을 하려고 한다.

 

우선 기본적인 도커에 대한 준비는 아래 참고 포스팅을 참고해서 셋팅이 되어있어야한다.

 

실행 환경은 다음과 같다.

- Mac

- Oracle 19c
- Docker

- Git bash

 

설치 및 build
  1. docker file 만들기 위한 스크립트가 있는 git project 받아오기
    • git clone https://github.com/oracle/docker-images
      를 통해서 프로젝트를 개인이 지정할 경로로 받아온다.
  2. 오라클 db 설치 파일을 받아온다.
    • https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
      에서 개인의 cpu에 맞는 zip파일을 받아온다.
  3. 받아온 파일을 받아온 git 프로젝트 내에 위치 시킨다.
    • OracleDatabase\SingleInstance\dockerfiles 위치로 가면 다양한 버전이 있고 자신이 받은 zip 파일의 버전에 맞는 폴더 안에 zip 파일을 넣는다.
  4. docker file  생성한다.
    • OracleDatabase\SingleInstance\dockerfiles 위치로 다시 이동하면 sh 파일이 존재한다.
    • ./buildContainerImage.sh -e -v 19.3.0 를 하여 빌드 시킨다.(본인 버전에 맞게)
      그럼 아래 사진과 같이 빌드가 되고 docker images 를 통해 확인할수 있다.

일단 여기까지 하면 기본적인 image 생성이 완료 된다.

 

그럼 이제 접속을 위한 절차를 해보면.

셋팅 및 접속

결국 docker image 를 run 시켜주기만 하면 된다.

하지만 매번 실행이 될때 새롭게 로딩이 될테니 PV 설정을 해줘야하고 (PV개념은 아래 참고 포스팅 참고 바란다.)
관리자 계정 및 사용자 계정 등 설정 이 필요하다.

 

  • docker-compose

docker run 명령이 아닌 docker-compose 명령을 위해 아래와 같이 docker-compose.yml 파일 셋팅을 한다.

docker-compose 관련해서는 아래 참고 포스팅 참고.

version: '3.8'
services:
  oracle:
    image: oracle/database:19.3.0-ee
    ports:
      - 1521:1521
    volumes:
      - /Users/docker/docker-compose/oracle/oradata:/opt/oracle/oradata

간단히 몇가지만 말하면 image: 에는 본인 피시에 설정된 이미지 이름을 넣으면 되고 

port는 oracle 기본 포트이지만 알아서 설정하면된다.

volumes : 부분이 pvc 설정인데 - 경로A : 경로B 이고

A가 본인 로컬에 위치할 경로, B가 새롭게 생길 container 내의 경로이다.

B 경로는 default 가 opt/oracle/oradata 이니 그대로 적어주면 된다.

 

  • docker-compose up

그리고 docker-compose up 명령어를 해주면 oracle 이 셋팅이 되면서 실행이 된다.

처음에는 오래걸릴수 있으니 참고 바람.(용량이 꽤나 커서 시간이 좀 걸렸음..)

 

  • docker exec

그리고 나서 실행이 되면 

docker ps 를 통해서 docker id를 확인할수 있다.

또다른 터미널을 하나 열어서

docker exec -it docker id /bin/bash

를 접속해서 

sqlplus /nolog 명령어를 쓰면 
SQL> 이렇게 접근이 가능하다.

 

  • oracle 계정 설정

그리고 아래와 같이 순서대로 설정하면 된다.
1. connect sys as sysdba;  -- //password  'Oradoc_db1'
2. alter session set "_ORACLE_SCRIPT"=true;
3. create user username identified by userpw;
4. GRANT CONNECT, RESOURCE, DBA TO username;

 

  • dbeaver 접속 테스트

dbeaver 에서 oracle 설정 후 기본 SID 인

SID:ORCLCDB
PORT:1521
username: username
password: userpw 

를 설정해서 TEST해보면 정상 연결이 되는걸 확인할수 있다.

 

그리고 혹시몰라 도커를 종료후 다시 실행해도 금방 실행이 되고 정상적으로 접속이 된다.

 

Oracle에서는 Tablespace 라는 개념이 있는데,

확인해보면 
필자는 Docker라는 테이블 명을 Dummy라는 계정으로 생성하였고 아래와 같다.

SELECT * FROM DBA_TABLES WHERE owner = 'DUMMY';

테이블이 USERS 라는 tablespace 에 존재한다.

 

tablespace 의 물리적인 경로가 어디인지 확인해보니. 아래와 같다.

 

SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES ;

결과는 

 

/opt/oracle/oradata/ORCLCDB/users01.dbf 파일에 새롭게 생성된 테이블의 정보가 들어가있다.

그럼 이 파일이 실제 로컬에 지정해둔 pv 경로에 있는지 확인을 하면.

이렇게 물리적인 경로에 실제 파일이 존재하는것을 알수 있다.

docker-compose 에 해당 경로를 기입해뒀으니 앞으로 도커 재실행시 항상 이 위치를 읽어서 생성이 되게 된다.


참고 포스팅

https://thenicesj.tistory.com/88

 

Docker란?

이번 시간에는 도커를 다뤄볼 것이다. 얼마전 영상에서 saas / paas / iaas 를 다뤘는데 이와 비슷하면서도 다른 내용의 도커이니 좀더 알고 싶다면 아래 포스팅을 보고 오는것을 추천드린다. https://t

thenicesj.tistory.com

https://thenicesj.tistory.com/708

 

docker-compose

docker 에 대한 내용은 아래 참고 포스팅 참고 바란다. 이전에 도커 사용법에 대한 내용도 다뤘었다. 기본적인 명령어는 $ docker run ..... 이런식으로 시작이 된다. 그리고 여러개의 도커를 띄우려면

thenicesj.tistory.com

https://thenicesj.tistory.com/698

 

PV, PVC (Persistent Volume Claim)

쿠버네티스에 대한 내용은 아래 참고 포스팅을 참고 바란다. 쿠버네티스는 PV 라고 하는 볼륨과 Claim을 붙여서 요청을 하는 PVC로 나뉜다. pod는 생성이 되고 소멸이 되는데 반면 PV는 PVC에 의해 만

thenicesj.tistory.com

 

반응형

댓글