때는 2023년 3월 초 1년 만의 복학을 하게 되었다...
수강신청 전 수업계획서를 확인해 보는데 데이터베이스 관련 전공이 딱 두 개 있는 걸 발견했다.
한 개는 MSsql을 사용하고 한 개는 ORACLE을 사용하는 수업이었다.
MSsql...? 진짜 첨 들어보는 디비였기 때문에 쿨하게 패스했고 그나마 안면이 있는 오라클을 무작정. 아무 생각 없이. ㅋㅋ mysql도 맥북으로 했는데 오라클 디비쯤이야 못 쓰겠어? 하는 생각으로 냅다 수강신청을 해 버렸다...
이때 과거의 나는 개강한 직후부터 3월 중순까지 후회하게 되는데...
그 모든 후회와 삽질들을 이번 포스팅에서 정리해 보려 한다.
과거의 나를 보는 현재의 나... stay!!!!!
그치만? 결국 차승원마냥 극.뽁해냈다. 내가 해냄. 서론은 이쯤에서 거두절미하고 제대로 포스팅 갑니다.
레쭈고
먼저 알아둬야 하는 사실이 인텔칩을 사용하던 구형 맥북에서 오라클 디비를 사용할 때의 해결 방법과 m1칩을 사용할 때의 해결 방법이 다르다는 것이다. 난 이걸 모른 상태로 냅다 구글링만 했었어서 하루 정도는 인텔칩 기준 해결 방법만 보느라 왜 안 되냐고 소리질렀던 경험이 있다.
먼저 오라클에 접속해서 오라클 디비를 정상적으로 설치하고 SQLDeveloper까지 설치한 후 SQLDeveloper로 오라클 디비를 연동하려고 하면 Connection Test에서 계속 에러가 날 것이다.
내 경우로는 ORA-12505가 계속 떴었다. 잘못된 SID를 썼을 때 나는 오류였는데 내가 설정한 SID를 똑같이 썼음에도 계속 오류가 떴고 SID는 안 되는 건가 싶어서 IP 주소로 했음에도 똑같은 결과였다.
오류가 나는 이유는 간단하다.
맥 차별 폼 미쳤다... ㄷㄷ 진짜 내 소중한 맥이 미워지는 순간이었다. 사실 맥이 미웠다기보다는 맥 차별하는 오라클이 너무너무 미웠음.
일단 내가 해 봤던 삽질에 대해 순서대로 정리해 보자면
이렇게 총 네 개인데 일단 첫 번째의 jdk 버전은 이 글을 보는 분들이 함께 변경해 주면 좋을 것 같다. jdk 버전이 높은 상태에서 해 본 경험이 없어서 잘은 모르겠으나 오라클 디비 자체에서 jdk 버전이 11일 때 가장 오류 없이 원활하게 사용할 수 있다는 구글링을 해서 나온 선배림들의 조언이 있었기 때문에 나도 jdk 버전은 11로 다운그레이드하여 사용했다.
두 번째는... 아무래도 m1칩일 때는 SID와 IP 주소만 변경한다고 해결되는 경우가 아닌 것 같다. ORA-12505 에러가 뜨면 애꿎은 SID를 잡지 말고 바로 3번이나 4번 방법으로 넘어가도록 하자.
그래서 나는 도커를 이용해 컨테이너를 생성하고 그 안에 오라클 디비를 설치한다든가 오라클 전자지갑을 이용해 오라클에서 지원해 주는 클라우드 기반 데이터베이스를 사용해 연동할 계획이었다.
오라클 전자지갑을 사용하는 방법으로는 굳이 SQLDeveloper를 연동하지 않고 DBeaver와 연동하여 사용할 수 있어서 DBeaver에 비교적 익숙한 맥북 유저들이 ui적인 부분에서 편리하게 사용할 수 있다. 그러나 오라클 클라우드에 가입하고 다른 부수적인 요소들을 설치하는 부분이 꽤나 복잡하고 귀찮았다.
하지만 이 당시 나는 방법이 이것밖에 없는 줄 알고... 지푸라기라도 잡는 심정으로 도전해 봤으나 신용카드를 잘 사용하지 않는 일개 대학생인 나에게 아주 큰 문제가 있었다.
바로바로 오라클 클라우드는 해외결제가 되는 카드여야만 하고 체크카드로는 가입할 수 없다는 점. 즉, 해외결제가 되는 본인 명의의 신용카드를 보유하고 있는 사람만 가입할 수 있었다.
여기서 진심 눈물날 뻔했다. 그치만 포기를 모르는 여자... 불꽃여자인 나는 다른 방법을 또 구글링해서 찾아냈다.
Colima라는 걸 아시나요? 나는 진짜 처음 들어봤다...
Colima란 오픈소스 컨테이너 런타임 중 하나인데 이 Colima를 사용해 oci-oracle-xe 이미지를 x86/64 환경으로 띄운다면 M1 맥북에서도 오라클 데이터베이스를 띄울 수 있었다.
Colima 설치
이 방법을 사용하기 위해서는 먼저 Colima를 설치해야 되는데 brew를 사용해서 쉽게 설치할 수 있다.
brew install colima
터미널에 이렇게 명령어만 쳐 주면 colima가 정상적으로 설치될 것이다.
docker 설치
그 다음으로는 docker를 설치해야 되는데 도커가 설치되어 있다면 실행 중인 도커를 종료하고 colima 실행으로 넘어가면 된다.
만약에 도커가 설치되지 않았다면 도커 또한 brew로 설치가 가능하다
brew install --cask docker
Colima 실행
이제 대망의 colima를 실행할 차례이다.
많은 사람들이 도커만을 사용해서 oracle 디비를 쓸 수 있다고 올려 놓은 포스팅도 많이 봤는데 M1칩에서는 도커만으로 컨테이너를 띄웠을 때는 아키텍처가 달라 문제가 되었다. 이 점을 이제 Colima가 해결해 줄 것이다.
colima start --memory 4 --arch x86_64
터미널에 이 명령어를 그대로 작성하여 oci-oracle-xe 이미지로 컨테이너를 띄워 보자.
그럼 이렇게 실행이 된다. 마지막에 done이 뜬다면 docker ps 명령어를 사용해 잘 작동되는지 확인해 보면 된다.
(첨부 사진에 나온 경로는 무시해도 된다)
그리고 이제 오라클 서버를 띄워야 하는데 비밀번호 옵션만 편한 대로 변경하면 된다.
docker run --restart unless-stopped --name oracle -e ORACLE_PASSWORD=1234 -p 1521:1521 -d gvenzl/oracle-xe
나 같은 경우에는 제일 자주 쓰는 비밀번호로 설정해 놨다.
이렇게 작성하고 오랜 시간... 기다리면 설치가 완료되는데 정말 오래 걸리니 중간에 안 되는 건가? 싶어서 ^C를 누르는 행위는 자제해야 된다...
인내심을 가지고 기다리다 보면 언젠간 끝나 있다. 설치가 완료되면 로그를 확인해 보면 되는데 이것 또한 터미널에
docker logs -f oracle
이라고 작성해 주면
이~~렇게 긴 로그가 나오는데
기다림 끝에 DATABASE IS READY TO USE!가 뜬다면 성공적으로 마무리한 것이다!!
잠깐의 기쁨을 즐긴 채... 드디어 대망의 연결을 테스트해 볼 차례이다.
이 방법또한 DBeaver와 연동할 수 있는데 나는 수업에서 오라클 디비를 사용하기 때문에 최대한 교수님과 같은 환경을 만들어 주기 위해 오라클 디비와 연결 테스트를 해 보겠다.
SQLDeveloper에 접속한 뒤 왼쪽 상단의 + 버튼을 눌러서 데이터베이스 접속 선택을 하면 되는데
Host는 localhost
Database는 xe
포트는 1521을 입력하고
유저네임은 system
비밀번호는 아까 자신이 설정한 비밀번호를 입력하고 테스트하면 된다.
만약 데이터베이스명이 혹시 orcl로 되어 있다면 xe로 꼭 바꿔 줘야 한다.
정말정말 너무 힘들었던... 일주일간의 삽질이었다.
무덤 파기 대회까지 나갈 뻔했던 여자 어떤데...
이 포스팅을 보는 분들은 이 글 하나만으로 M1칩 오라클 디비 접속 오류를 바로 해결할 수 있었으면 하는 바람이다!!
모두 행복한 개발 합시다. 🥹🥹
그럼 이만.......