Oracle M1 MAC에서 사용하기 (23c free)
서론
대학 수업을 듣던 도중, 데이터베이스 과목에서 Oracle을 사용하게 되었다.
하지만 M3 맥북프로를 사용하는 나는 Oracle를 Native로 돌릴 수 없다.
Docker를 사용하여 최신의 Oracle 23x free를 받아 사용하는 방법을 옮겨적고자 한다.
참고로 모 학교의 에브리타임에 있는 내용과 동일한 내용이다.
본론
우선 준비물. Homebrew 여기를 참고해 설치한다.
다음으로 Colima 라는 경량 Docker 런타임(버추얼머신 비슷한 녀석)을 깔아야한다.
brew install colima
명령어를 사용하면 간단히 깔 수 있다.
마지막으로 Docker client 를 설치하는데, 이건 간단하게 brew install docker
로 깔 수 있다.
설치가 완료되면 Docker를 실행할 x86 기반의 버추얼머신을 만들어야 한다.
colima start --network-address --memory 4 --arch x86_64
명령어로 간단히 4GB짜리 x86_64 버추얼머신을 띄워준다.
명령어를 해석하자면 network address 기능을 사용하고, 램 4GB, x86_64(amd64)의 버추얼머신을 가동하라는 명령어다.
여기까지는 모든 블로그가 동일하다.
다른 블로그를 봤다면 Oracle x21 XE
가 깔려 있을 것이다. 우리는 이 이미지가 더이상 필요하지 않으니 지울 것이다.
docker container ls -al 로 컨테이너의 이름을 알아낸다. 컨테이너의 이름은 NAMES 레이블에 있다.
여기에서 알아낸 이름(이미지는 oracle 일 때)을 통해 삭제하는 법은 docker container rm oracle --force
이다.
이제 드디어 Oracle 설치의 시간이다.
docker run -d -p 1521:1521 -e "ORACLE_PASSWORD=oraclepass" -v oracle-volume:/opt/oracle/oradata gvenzl/oracle-free
명령어로 Oracle Container를 만들어준다.
컨테이너 이름을 알고싶다면 docker container ls -al 을 쳐주면 된다.
위의 이미지와 비슷하지만 컨테이너 이름이 랜덤으로 부여되어 있다. 또 restart-policy를 제대로 설정하지 않았다.
docker rename (컨테이너 이름) oracle
로 컨테이너 이름을 oracle로 바꿔준다.
또 restart-policy를 업데이트 한다. docker update --restart always (컨테이너 이름)
명령어로 간단히 할 수 있다.
만약 패스워드가 이상하다면 다음 명령어를 사용한다. oraclepass를 원하는 패스워드로 바꾸면 된다. 아쉽게도 이 명령어는 민감한 정보이다 보니 사진으로 담지는 못했다. 다만 이 명령어는 gvenzl/oracle-free
이미지에는 공통적으로 사용할 수 있는 명령어이다.
docker exec (컨테이너 이름) resetPassword "oraclepass"
마지막으로 접속 파트다. 나는 DataGrip를 사용한다. JetBrains 학생인증을 받은 상태여서 무료로 사용할 수 있다.
MySQL이나 PostgreSQL을 사용해본 적이 있다면 접속정보가 조금 다른것을 바로 눈치챌 수 있다.
Oracle은 MySQL과 다르게 sid라는 정보로 추가인증을 하게 된다. 하지만 Oracle 21c XE
와 다르게 이 Docker image는 SID가 free로 설정되어 있다. 따라서 다음 이미지와 같이 설정해줘야 한다.
이제 colima stop과 start만 알려준다면 이 글은 완전히 끝이다.
colima는 하이퍼바이저기 때문에 배터리 사용량이 어마어마하다. 쓸모없는 하드웨어 자원을 먹기도 한다. 따라서 필요할 때만 켜서 사용하는 것을 권장한다.
colima stop
명령어로 간단히 종료, colima start
명령어로 다시 시작할 수 있다.
결론
이전까지의 블로그는 Oracle 21c XE
버전을 기준으로 설명되어 있다. 하지만 Maintainer가 이 Image를 더 이상 유지보수하지 않는다.
따라서 이 글을 보고 최신버전을 사용하기를 권장하는 바이다.