Oracle은 MacOS를 정식 지원하지 않으므로 Mac에서 Oracle Database를 설치하기 위해서는 별도의 절차가 필요합니다.
MacOS에 Oracle DB를 설치하는 방법으로 알려진 것은 두 가지가 있습니다.
- Oracle Cloud에 DB를 띄워 사용하는 방법
- 오픈소스 컨테이너 런타임
Colima
를 사용해oci-oracle-xe
이미지를 x86/64가상 환경으로 띄워 사용하는 방법
이 글은 두 번째인 Docker x Colima를 이용하는 방법에 대해 설명합니다.
대부분의 작업은 iTerm 등 터미널(명령 프롬프트)을 이용해 진행됩니다.
+) 저는 M1 Ventura 13.0.1/Docker 24.0.5v 환경에서 설치했으며, Mac OS 혹은 Docker 버전으로 인해 절차가 다를 수 있습니다.
💡 Colima는 무거운 Docker Desktop을 대신해 간단한 CLI 환경에서 도커 컨테이너들을 실행할 수 있는 오픈 소스 소프트웨어입니다.
brew 를 활용해서 손쉽게 설치합니다. brew가 없다면 Mac 에 brew 설치하기를 참고해서 먼저 설치 해 주세요. brew가 설치되었다면, 터미널에 다음과 같이 명령을 입력합니다.
brew install colima
Docker 홈페이지에서 Download for Mac - Apple Chip
을 선택하여 Docker Desktop을설치합니다.
만약 Docker Desktop은 필요 없고 Docker Engine만 설치하고 싶은 경우, brew로 도커 엔진만 설치하셔도 됩니다. 아래 명령으로 엔진만 설치할 수 있습니다.
brew install docker
Docker Desktop을 설치하셨다면 명령을 입력하지 않아도 됩니다!
💡 Colima는 Docker Desktop을 대신해서 docker 엔진을 실행해주는 역할을 합니다.
Colima와 Docker를 모두 설치했다면, colima를 x86_64 환경으로 띄워 줍니다. 터미널에 다음과 같이 입력합니다.
colima start --memory 4 --arch x86_64
start에 다소 시간이 걸립니다.
잠시 기다린 뒤 다음과 같이 “done”이 뜨면 colima 실행 완료.
다음처럼 docker ps
명령어를 사용할 수 있으면 정상적으로 가상 환경이 준비된 것입니다.
💡
docker ps
는 현재 실행중인 docker 컨테이너를 조회하는 명령으로, 창 너비가 좁아 줄바꿈이 생겨 알아보기 힘들지만 “CONTAINER ID”, “IMAGE”, “COMMAND”, “CREATE”, “STATUS”, “PORTS”, “NAMES” 열이 있는 테이블입니다.docker를 처음 실행했거나 현재 실행중인 컨테이너가 없을 경우 열 이름 이외의 행이 없을 수 있습니다.
가상 환경이 준비되었으니, docker run
명령을 통해 docker 컨테이너를 실행하고 이 환경에 오라클 서버를 띄워야 합니다.
우리가 사용해야 하는 명령은 아래 형태입니다. \
로 하나의 긴 명령을 여러줄로 입력할 수 있습니다.
docker run \
--restart unless-stopped \
--name oracle2 \
-e ORACLE_PASSWORD=pass \
-p 1521:1521 \
-d \
gvenzl/oracle-xe
- —restart 옵션
unless-stopped
로 설정하면 재부팅 시에도 자동으로 Oracle DB가 실행된다.- —name 옵션
- 컨테이너를 지칭하는 이름을 부여하는 옵션. 자유롭게 지정 가능하다.
- 컨테이너 ID 대신에 사용할 수 있다.
- -e 옵션
- 컨테이너의 환경 변수 설정
ORACLE_PASSWORD
라는 환경변수에 앞으로 사용할 비밀번호를 할당한다.- -p 옵션
- 포트 배포 및 바인딩을 위한 옵션
- 오라클 기본 접속 포트는 1521로 사용되어 동일하게 설정했다.
- -d 옵션(인자 없음)
- 컨테이너를 백그라운드에서 실행할 경우 사용
- gvenzl/oracle-xe
- 이미지 식별자. 필수요소
- 오라클 이미지를 다운로드합니다.
명령에 성공하면 해쉬 문자열을 반환하며 다음 명령을 입력할 수 있습니다.
docker ps
위 명령을 실행해 현재 실행중인 컨테이너를 조회했을 때 행이 추가된 것을 확인한 뒤,
docker logs -f (컨테이너명)
docker logs
로 로그를 확인했을 때 조금 기다린 뒤 “DATABASE IS READY TO USE!”가 뜨면 성공입니다.
control(^) + c
로 로그 화면을 나갈 수 있습니다.
생성한 컨테이너가 실행중에 있다면 다음 명령을 통해 SQL plus를 실행시킬 수 있습니다.
docker exec -it oracle sqlplus
그럼 다음과 같이 유저이름과 패스워드를 입력하라고 나오는데,
user-name은 system, password는 컨테이너 실행 시 설정한 비밀번호를 입력하면 됩니다.
password는 입력해도 UI에 뜨지 않는 것이 정상입니다.
잠시 기다린 뒤 SQL >
으로 명령을 받기 시작하면 SQL Plus가 정상 실행된 것입니다.
이후 SQL plus를 종료하고 싶으면, exit
명령어를 사용합니다.
“Disconnected from Oracle Database 21c...” 문구가 뜨면 연결이 종료되어 일반 터미널로 돌아갑니다.
SQL Plus만 종료되었을 뿐 docker 컨테이너는 실행 중인 상태입니다.
docker 컨테이너 실행하기(컨테이너 생성 시 --restart unless-stopped
옵션을 추가했을 경우 필요없을 수도 있습니다.)
docker start 컨테이너이름
“oracle” 이라고 뜨며 다음 명령을 입력할 수 있게 되면 실행된 것입니다.(시간이 좀 걸립니다)
SQL plus 실행하기
docker exec -it 컨테이너이름 sqlplus
Enter user-name: system
Enter password: 패스워드
유저네임과 패스워드를 입력하면 sql plus를 실행할 수 있습니다.
잘 읽었습니다. 혹시 docker run 이후 과정에서 -f logs 를 확인할 때 PMON did not start 라는 로그 문구와 함께 컨테이너가 죽는 상황이 빈번한데, 이 경우에 대해서 알고 계실까요 ?