준비물

1. Oracle JDBC Driver
>> OJDBC 링크



2. Oracle 전자지갑 만들기
>> Oracle Cloud 링크



3. DB 접속 툴
: 툴은 여러가지가 있는데 저는 DBeaver를 사용했습니다. 이유는 그냥 비버가 귀여워서요.
>> SQL Developer 링크
>> DBeaver 링크


아직까지는 M1에서 Oracle DB를 정상적으로 구동할 방법이 없죠.
(Rosetta2로 Docker도 공식 지원한다고 해서 별 시도를 다 해봤지만 결국 소득이 없었습니다)
방법이라고는 VM으로 윈도우나 리눅스를 설치해서 이용하라고 합니다.
Oracle Wallet이라는 것을 알게되고 그거는 가능하겠다 싶어 또 덤벼봤지만 결국 커다란 벽에 부딪혔습니다. 다른 사람들은 다 되는 연결이 Connection Test에서 계속 에러가 나면서 연결이 안되는 겁니다... 영롱한 Apple Silicon Chip이 갑자기 미워지는 순간이 찾아왔습니다.

그래도 불굴의 의지로 결국 Oracle Wallet을 연결해냈습니다. 3주 넘게 구글링을 해도 관련된 에러에 대해서는 글이 없길래, 혹시나 저같은 경우가 있으실까 싶어서 포스팅합니다.



1. Oracle Wallet 만들기


Oracle Cloud에 접속하신 후에 가입을 해주세요.
클라우드 홈에 들어오면 무료로 이용할 수 있는 세션들이 굉장히 많습니다.

ATP 데이터베이스 생성 을 통해 클라우드 데이터베이스를 이용할 수 있는 전자지갑을 생성해보려고 합니다.
클릭하면 아래와 같은 페이지로 넘어가게 됩니다. 체크된 부분을 확인하면서 생성해주세요.


체크부분까지 완료하셨으면 자율운영 데이터베이스 생성 버튼을 눌러주세요.
만일 바로 완료 대신 에러가 뜬다면, 오라클 측에서 데이터베이스 생성을 하고 있기 때문에 발생하는 것입니다.
몇 분정도 기다렸다가 확인해 주시면 아마 데이터베이스가 생성되어 있을 겁니다.
(생성이 안되어 있다면 위의 절차대로 한 번 더 실행해 주세요)


바로 데이터베이스 화면으로 넘어가지 않으면, 홈 > 데이터베이스 > 자율운영 트랜젝션 처리(ATP) 를 통해 확인해 줍니다.


이 페이지에서 방금 만든 데이터베이스가 사용 가능 이라고 뜬다면 이제 전자지갑을 사용할 수 있습니다. 축하합니다~!


데이터베이스 이름을 확인하고, 왼쪽 상단의 DB 접속 버튼을 눌러주세요.


전자지갑 다운로드 버튼을 누르면 비밀번호를 입력하라고 나옵니다.
처음에 설정한 관리자 계정 비밀번호와 다른 것이라 헷갈릴 수 있습니다. 잘 기억해주세요.

전자 지갑 경로는 본인이 자주 사용하는 곳으로 지정해주세요. 다시 경로를 설정해서 옮길 수 있으니, 지금은 어디에다 저장해도 상관은 없습니다.



2. OJDBC 다운받기


데이스베이스가 하드에 정상적으로 설치된 상태라면 단순히 SQL문을 이용하는데 드라이버까지 설치할 필요는 없습니다.
하지만 Oracle Wallet을 이용하기 위해서는, 클라우드 기반 데이터베이스를 불러와야 하기 때문에 둘을 연결할 드라이버가 필요합니다.
위에 걸어둔 링크로 들어가서 버전에 맞는 드라이버를 다운받아 줍니다.

전자지갑 버전이 19c 였기 때문에, 드라이버도 19c로 받았습니다.

저는 ojdbc10-full.tar.gz 를 받았습니다. 19c 데이터베이스를 작동시킬 드라이버면 사실 뭐를 다운받든 상관은 없는 것 같습니다.


드라이버도 전자지갑과 같이 자주 사용하는 곳에 받아주시면 됩니다.


3. DB 접속 툴 설치하기

저는 brew 로 DBeaver를 설치했습니다. SQL Developer는 brew로 설치가 불가능하기도 하고, 앞에서도 말했다시피 비버 캐릭터가 그냥 존귀입니다. (비버 사진 투척)

brew로 DBeaver 설치하는 명령어는 아래와 같습니다.

brew install --cask dbeaver-community

4. Oracle Wallet 연결하기

(현재는 SQL Developer가 없기 때문에, Dbeaver ver. 로 포스팅합니다.)

처음 화면에서 New Connection을 누르면 다음과 같이 연결할 DB 목록들이 뜹니다.
Oracle Wallet이기 때문에 Oracle을 선택해 줍니다.

Connection setting을 다음과 같이 설정해 주세요.

1) Connection type을 Basic > Custom 으로 변경

2) JDBC URL Template을 아래와 같이 넣어줍니다.

  jdbc:oracle:thin:@데이터베이스 이름_medium?TNS_ADMIN=/전자지갑경로/Wallet_데이터베이스 이름/
  • 데이터베이스 이름은 처음에 설정했던 이름입니다. 오라클 클라우드 사이트에서 확인할 수 있습니다.
  • 데이터베이스 이름 뒤에 _high / medium / low 는 별도로 설정할 수 있습니다. (전자지갑의 OCPU는 1개에 불과하기 때문에 성능보다는 동시에 여러 개 사용가능한 medium을 선택했습니다.)

    high : SQL문에서 최고의 성능을 보이며, 데이터베이스 이용시 모든 CPU 및 IO 리소스를 사용한다. 하지만 동시에 실행할 수 있는 SQL문의 수는 3개이다.
    medium : high보다 낮은 수준의 리소스를 제공하지만, 실행할 수 있는 동시 SQL문의 수는 high보다 더 많다.
    low : 각 SQL문에 최소 수준의 리소스를 제공한다. 가장 많은 수의 SQL 문을 동시에 지원한다.

  • 전자지갑경로는 전자지갑을 저장한 위치입니다.
    경로를 쉽게 알 수 있는 방법으로는, 전자지갑 우클릭 > [복사] > terminal.app (spotlight에 terminal 이라고 검색)을 열어서 command + v 하면 경로가 바로 나옵니다.


3) Username / Password 를 입력합니다.

ATP 데이터베이스를 만들 때 설정했던 관리자 아이디인 ADMIN과 설정한 비밀번호 입니다.
Username : ADMIN
Password : 설정한 비밀번호


4) Edit Driver Setting 을 클릭합니다.



5) Default Port를 확인 / 설정해 줍니다.

아마 초기 설정은 Oracle default port1521로 설정이 되어있을 겁니다. 저는 제 지갑에 할당된 포트번호로 변경했습니다. 이 포트번호를 알 수 있는 방법을 알려드릴게요.

전자지갑에 압축을 풀면 tnsnames.ora 라는 파일이 있습니다.

  데이터베이스 이름_high = (description= (retry_count=20)(retry_delay=3)
  (address=(protocol=tcps)
  (port=1522)(host=adb.ap-seoul-1.oraclecloud.com))

파일을 열면 지갑의 정보를 확인할 수 있고, 거기에 port 번호도 확인할 수 있습니다. 저는 1522로 지정이 되어있길래 1522로 바꿨습니다.

저는 '1521'로 시도했을 때 계속 안됐었던 전적이 있기 때문에 '1522'로 변경을 하지만, 만약에 '1521'로 해도 된다 싶으면 그냥 두셔도 됩니다.


6) OJDBC UPLOAD (.jar 파일 전부)

Libraries 목록으로 들어가서 아까 다운받은 드라이버를 업로드합니다. 저는 사실 이 방법을 통해 안 되던 연결이 성공한 케이스입니다.
Add File 을 눌러서 압축을 푼 드라이버를 업로드 하는데, .jar 파일들은 전체 다 불러와 줍니다.

다운받은 버전에는 .jar 파일이 총 10개 입니다.
일반적으로는 가장 상단의 ojdbc10.jar 파일만을 불러왔을 때 Connection에 성공하셨다고들 하는데, 저는 계속 에러가 뜨고 연결이 안되었던 상황입니다.
결국 드라이버를 구성하는 모든 jar 파일들을 불러와서 Class를 찾아주었을 때 비로소 연결에 성공했습니다.


7) Find class로 연결 확인하기

jar 파일들을 모두 추가했으면 아래 Find Class 버튼을 눌러줍니다. 그러면 Driver Class 가 생성됩니다.
저 같은 경우는 2개였는데, 2개 다 시도했을 때 연결이 됐었던 걸로 봐서 뭐를 선택하든 크게 상관은 없는 것 같습니다.
Driver class가 찾아졌다면 확인을 눌러서 적용해주세요.


8) Test Connection 시도해보기

사실 이렇게 하고도 큰 기대를 안했습니다.
Connection Failed! 라는 문구가 너무나도 익숙할 정도로, 듣도 보도못한 에러코드까지 전부 외웠을 정도로 숱한 시도와 에러만을 봐왔기 때문에 '설마 되겠어?' 라는 염려 섞인 기대가 먼저 들었습니다.

그런데 결국 Connection이 되었다는 문구가 떴습니다.
드디어 제 m1 mac에서도 OracleDB를 사용할 수 있게 되었습니다!

돌이켜 봤을 때, 기존의 방식과 달리한 것은 드라이버를 전체 추가한 것Find Class로 드라이버의 클래스를 찾아준 것뿐이었습니다.

혹시 m1을 쓰고있는데 알려진 방법으로 Oracle Wallet 연결이 안되는 분은 이 방법으로 시도해 보세요 !!


profile
꽃길만 걸어요 우리

14개의 댓글

comment-user-thumbnail
2022년 1월 8일

test connection을 했을때

Invalid connection string format, a valid format is: "host:port:sid"

이렇게 뜨면 어떻게 해야하나요?

2개의 답글
comment-user-thumbnail
2022년 1월 14일

오라클 클라우드 회원가입시 카드 인증에서 계속 오류나네요 ㅠ

1개의 답글
comment-user-thumbnail
2022년 1월 23일

좋은 정보 감사합니다!
그런데 혹시 SQLD로도 할 수 있는 방법을 포스팅 부탁드려도 될까요?

2개의 답글
comment-user-thumbnail
2022년 2월 7일

좋은 글 적어주셔서 덕분에 접속 성공 했습니다.
감사합니다.

답글 달기
comment-user-thumbnail
2022년 2월 23일

안녕하세요.. 혹시 eclipse에서 직접 연동 할 수 있는 방법이 없을까요?? JSP 파일과 db 연동을 하기 위해서 진도를 나가고 있는데 해당 방법은 검색해도 많이 나오지 않는 것 같아 실례를 무릎쓰고 여쭤봅니다ㅠㅠ

답글 달기
comment-user-thumbnail
2022년 4월 20일

이글 보고 연결 성공은 했습니다 정말 감사합니다!!
혹시.. 죄송한데 해당 글과는 다른 내용인데 데이터 insert시에

SQL Error [1950][42000]: ORA-01950: 테이블스페이스 'DATA'에 대한 권한이 없습니다.

이렇게 나오는데 해결 방법을 혹시 아실까요..?

답글 달기
comment-user-thumbnail
2022년 6월 9일

M1 맥북에서 오라클 사용하기 너무 좋은 포스팅이라고 생각이 합니다. 감사합니다
저는 카드에서 1.3달러가량 지불 되었다가 취소되는 과정까지는 되는데 그 이후 트랜 잭션에서 오류가 있다고 다시시도하거나 고객지원에 문의하라고 하길래 네이버페이 VISA카드, 신한 VISA 체크카드, 카카오뱅크 Mastercard 체크카드 모두 해봤는데 하나도 안되더라구요..울화병터지는 줄 알았습니다..다른 해외결제를 이용했을 때는 잘 되던것이 모두 안되니 참.. 안되는 분들은 그냥 문의 넣고 기다리는게 답인 것 같습니다

1개의 답글