처음 국비교육 받을때 오라클을 사용하기 위해서 도커 컨테이너 사용법을 익혔는데, 그 때 다른 윈도우 컴퓨터 환경의 친구들과 달리 실습환경인 scott 계정이 없어서 난감했던 기억이 있다.
그 때 결국 학원 다른 친구들과 똑같은 환경(Windows)에서 실습을 따라했던 기억이 있는데, 맥에서도 똑같이 할 수 있는 환경을 만드는법을 공유하기 위해 작성해본다. 절차는 아래와 같다.
맥에서 실습 환경 구축하기라고 이름 짓긴 했지만, 사실 윈도우에서도 똑같이 할 수 있다.
- Docker 설치하기
- 오라클 도커 이미지 내려받기
- 도커 컨테이너 생성 및 실행하기
- 클라이언트로 오라클 DB 접속하기
- SCOTT 계정 생성하기
- SQL 파일 생성하여 테이블 및 데이터 쿼리 작성하기
- SQL 파일로 한번에 insert하고, commit하기
1. Docker 설치하기
도커 공식 웹 사이트에서 도커를 설치한다.
2. 오라클 도커 이미지 내려받기
11g 버전의 오라클 환경을 구축하려고 한다.
1 | $ docker search oracle-xe-11g |
stars가 가장 많은 이미지는 oracleinanutshell/oracle-xe-11g
이다. 보통 stars가 가장 많은 이미지를 사용해도 될텐데 필자는 wnameless/oracle-xe-11g-r2
를 내려받았다.
1 | $ docker pull wnameless/oracle-xe-11g-r2 |
3. 도커 컨테이너 생성 및 실행하기
도커 이미지를 내려받았으므로, 이미지를 기반으로 컨테이너를 생성할 차례이다.
1 | $ docker run -d --name oracle-xe-11g -p 1521:1521 [oracle-image-name] |
--name
은 컨테이너 이름을 지정할 때 사용하는 명령어이다.
아래 명령어를 입력하면 방금 생성된 컨테이너를 확인할 수 있다.
1 | $ docker ps -a |
-a
옵션을 추가하면 모든 컨테이너 목록을 보여주며, -a
옵션이 없으면 실행중인 컨테이너만 보여준다.
이제 컨테이너를 실행해준다.
1 | $ docker start oracle-xe-11g |
4. 클라이언트로 오라클 DB 접속하기
인텔리제이 유료 버전(Ultimate)에서는 RDBMS를 지원하기 때문에 IDE에서 바로 사용할 수 있다.
아래 동욱님 블로그에서 사용 방법을 알 수 있다.
필자는 무료 DB 클라이언트인 DBeaver Community Edition을 이용했다.
링크에서 Community Edition을 설치한다.
설치가 끝나고 실행하면, 아래의 이미지처럼 연결할 DB 클라이언트를 선택할 수 있다.
오라클을 선택했다면, 아래의 이미지처럼 폼을 채우고 OK 버튼을 클릭하면 도커 컨테이너의 오라클과 DBeaver 클라이언트가 연결이 된다.
Database는 XE로, Username은 system, Password는 oracle로 입력하면 접속할 수 있다.
필요한 드라이버를 설치할 수도 있다.
연결이 되었다면, SQL script를 추가해서 여기서 쿼리를 작성할 수 있다.
쿼리를 실행해보니 잘 조회가 된다. 아래의 결과는 이미 실습환경이 셋팅되었기 때문에 조회가 되는 것이다.
5. SCOTT 계정 생성하기
1 | CREATE USER scott identified by tiger; |
6. SQL 파일 생성하여 테이블 및 데이터 쿼리 작성하기
실습환경을 구축하는데 필요한 DDL, DML 쿼리가 담긴 파일을 구글 드라이브에 저장해두었다. 이 파일을 도커 컨테이너에서 wget
을 이용해서 가져올 것이다.
먼저 패키지 매니저인 apt-get을 업데이트하고, wget을 설치해준다.
1 | $ apt-get update |
이제 wget을 이용해서 구글 드라이브의 공유링크를 이용해서 파일을 다운받을 것이다.
구글 드라이브 공유링크는 아래와 같다.
https://drive.google.com/file/d/1KL0ssoVJVlLslu3kQvdbbH4jAGHw5jZv/view?usp=sharing
위의 링크에서 필요한 부분은 파일의 id만 필요하다. id는 d/
와 /view
사이의 문자열이 파일의 id에 해당한다.
이걸 https://drive.google.com/uc?export=download&id=
에 조합하면 된다.
1 | $ $ wget --no-check-certificate -O demobld.sql 'https://drive.google.com/uc?export=download&id=1KL0ssoVJVlLslu3kQvdbbH4jAGHw5jZv' |
그리고 잘 다운로드 되었는지 파일을 확인해보자.
1 | $ cat demobld.sql |
사실 구글 드라이브 링크를 통해 파일을 다운받고, 파일의 쿼리를 클립보드에 저장해서 도커 컨테이너 내부에선 Vim 에디터에서 붙여넣는 방식으로 파일을 생성할 수도 있었으나 wget
을 사용하는 경험을 위해 위의 방법을 사용했다.
7. SQL 파일로 한번에 insert하고, commit하기
위에서 작성한 SQL 파일(demobld.sql)을 한 번에 커밋까지 쿼리를 실행할 차례이다.
도커 컨테이너에 bash 모드로 진입하고, SQL플러스를 실행한다.
1 | $ docker exec -it oracle-xe-11g bash |
로그인까지 해서 오라클에 연결되었다면, 이제 컨테이너 내부에 있는 파일속 쿼리를 한 번에 실행할 차례이다.
1 | $ START demobld.sql |
이제 전체 테이블을 조회해보면 실습에 필요한 테이블이 조회될 것이다. 이제 실습환경이 구축되었다!