이번 포스팅에서는 Oracle을 사용하기 위한 docker 를 만드는 포스팅을 하려고 한다.
우선 기본적인 도커에 대한 준비는 아래 참고 포스팅을 참고해서 셋팅이 되어있어야한다.
실행 환경은 다음과 같다.
- Mac
- Oracle 19c
- Docker
- Git bash
설치 및 build
- docker file 만들기 위한 스크립트가 있는 git project 받아오기
- git clone https://github.com/oracle/docker-images
를 통해서 프로젝트를 개인이 지정할 경로로 받아온다.
- git clone https://github.com/oracle/docker-images
- 오라클 db 설치 파일을 받아온다.
- https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
에서 개인의 cpu에 맞는 zip파일을 받아온다.
- https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
- 받아온 파일을 받아온 git 프로젝트 내에 위치 시킨다.
- OracleDatabase\SingleInstance\dockerfiles 위치로 가면 다양한 버전이 있고 자신이 받은 zip 파일의 버전에 맞는 폴더 안에 zip 파일을 넣는다.
- 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
https://thenicesj.tistory.com/708
https://thenicesj.tistory.com/698
'IT > Docker.K8S' 카테고리의 다른 글
K8S 기본 명령어 모음(kubectl 옵션) (30) | 2024.05.02 |
---|---|
[K8S] nip.io 란? (15) | 2024.04.05 |
[Docker] Springboot 서버 띄우기(com.mysql.cj.jdbc.exceptions.communicationsexception: communications link failure 에러) (58) | 2023.10.19 |
[Docker] Dockerfile 만들기 (54) | 2023.10.18 |
docker-compose (50) | 2023.10.03 |
댓글