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주 넘게 구글링을 해도 관련된 에러에 대해서는 글이 없길래, 혹시나 저같은 경우가 있으실까 싶어서 포스팅합니다.
ATP 데이터베이스 생성
을 통해 클라우드 데이터베이스를 이용할 수 있는 전자지갑을 생성해보려고 합니다.
클릭하면 아래와 같은 페이지로 넘어가게 됩니다. 체크된 부분을 확인하면서 생성해주세요.
체크부분까지 완료하셨으면 자율운영 데이터베이스 생성
버튼을 눌러주세요.
만일 바로 완료 대신 에러가 뜬다면, 오라클 측에서 데이터베이스 생성을 하고 있기 때문에 발생하는 것입니다.
몇 분정도 기다렸다가 확인해 주시면 아마 데이터베이스가 생성되어 있을 겁니다.
(생성이 안되어 있다면 위의 절차대로 한 번 더 실행해 주세요)
바로 데이터베이스 화면으로 넘어가지 않으면, 홈 > 데이터베이스 > 자율운영 트랜젝션 처리(ATP) 를 통해 확인해 줍니다.
이 페이지에서 방금 만든 데이터베이스가 사용 가능 이라고 뜬다면 이제 전자지갑을 사용할 수 있습니다. 축하합니다~!
데이터베이스 이름을 확인하고, 왼쪽 상단의 DB 접속
버튼을 눌러주세요.
전자지갑 다운로드 버튼을 누르면 비밀번호를 입력하라고 나옵니다.
처음에 설정한 관리자 계정 비밀번호와 다른 것이라 헷갈릴 수 있습니다. 잘 기억해주세요.
전자 지갑 경로는 본인이 자주 사용하는 곳으로 지정해주세요. 다시 경로를 설정해서 옮길 수 있으니, 지금은 어디에다 저장해도 상관은 없습니다.
전자지갑 버전이 19c 였기 때문에, 드라이버도 19c로 받았습니다.
저는 ojdbc10-full.tar.gz
를 받았습니다. 19c 데이터베이스를 작동시킬 드라이버면 사실 뭐를 다운받든 상관은 없는 것 같습니다.
저는 brew
로 DBeaver를 설치했습니다. SQL Developer는 brew로 설치가 불가능하기도 하고, 앞에서도 말했다시피 비버 캐릭터가 그냥 존귀입니다. (비버 사진 투척)
brew로 DBeaver 설치하는 명령어는 아래와 같습니다.
brew install --cask dbeaver-community
(현재는 SQL Developer가 없기 때문에, Dbeaver ver. 로 포스팅합니다.)
처음 화면에서 New Connection을 누르면 다음과 같이 연결할 DB 목록들이 뜹니다.
Oracle Wallet이기 때문에 Oracle을 선택해 줍니다.
Connection setting을 다음과 같이 설정해 주세요.
jdbc:oracle:thin:@데이터베이스 이름_medium?TNS_ADMIN=/전자지갑경로/Wallet_데이터베이스 이름/
high : SQL문에서 최고의 성능을 보이며, 데이터베이스 이용시 모든 CPU 및 IO 리소스를 사용한다. 하지만 동시에 실행할 수 있는 SQL문의 수는 3개이다.
medium : high보다 낮은 수준의 리소스를 제공하지만, 실행할 수 있는 동시 SQL문의 수는 high보다 더 많다.
low : 각 SQL문에 최소 수준의 리소스를 제공한다. 가장 많은 수의 SQL 문을 동시에 지원한다.
terminal.app
(spotlight에 terminal 이라고 검색)을 열어서 command + v
하면 경로가 바로 나옵니다.ATP 데이터베이스를 만들 때 설정했던 관리자 아이디인 ADMIN과 설정한 비밀번호 입니다.
Username : ADMIN
Password : 설정한 비밀번호
아마 초기 설정은 Oracle default port인 1521로 설정이 되어있을 겁니다. 저는 제 지갑에 할당된 포트번호로 변경했습니다. 이 포트번호를 알 수 있는 방법을 알려드릴게요.
전자지갑에 압축을 풀면 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'로 해도 된다 싶으면 그냥 두셔도 됩니다.
Libraries 목록으로 들어가서 아까 다운받은 드라이버를 업로드합니다. 저는 사실 이 방법을 통해 안 되던 연결이 성공한 케이스입니다.
Add File 을 눌러서 압축을 푼 드라이버를 업로드 하는데, .jar
파일들은 전체 다 불러와 줍니다.
다운받은 버전에는 .jar
파일이 총 10개 입니다.
일반적으로는 가장 상단의 ojdbc10.jar
파일만을 불러왔을 때 Connection에 성공하셨다고들 하는데, 저는 계속 에러가 뜨고 연결이 안되었던 상황입니다.
결국 드라이버를 구성하는 모든 jar 파일들을 불러와서 Class를 찾아주었을 때 비로소 연결에 성공했습니다.
jar 파일들을 모두 추가했으면 아래 Find Class 버튼을 눌러줍니다. 그러면 Driver Class 가 생성됩니다.
저 같은 경우는 2개였는데, 2개 다 시도했을 때 연결이 됐었던 걸로 봐서 뭐를 선택하든 크게 상관은 없는 것 같습니다.
Driver class가 찾아졌다면 확인을 눌러서 적용해주세요.
사실 이렇게 하고도 큰 기대를 안했습니다.
Connection Failed! 라는 문구가 너무나도 익숙할 정도로, 듣도 보도못한 에러코드까지 전부 외웠을 정도로 숱한 시도와 에러만을 봐왔기 때문에 '설마 되겠어?' 라는 염려 섞인 기대가 먼저 들었습니다.
그런데 결국 Connection이 되었다는 문구가 떴습니다.
드디어 제 m1 mac에서도 OracleDB를 사용할 수 있게 되었습니다!
돌이켜 봤을 때, 기존의 방식과 달리한 것은 드라이버를 전체 추가한 것과 Find Class로 드라이버의 클래스를 찾아준 것뿐이었습니다.
혹시 m1을 쓰고있는데 알려진 방법으로 Oracle Wallet 연결이 안되는 분은 이 방법으로 시도해 보세요 !!
안녕하세요.. 혹시 eclipse에서 직접 연동 할 수 있는 방법이 없을까요?? JSP 파일과 db 연동을 하기 위해서 진도를 나가고 있는데 해당 방법은 검색해도 많이 나오지 않는 것 같아 실례를 무릎쓰고 여쭤봅니다ㅠㅠ
이글 보고 연결 성공은 했습니다 정말 감사합니다!!
혹시.. 죄송한데 해당 글과는 다른 내용인데 데이터 insert시에
SQL Error [1950][42000]: ORA-01950: 테이블스페이스 'DATA'에 대한 권한이 없습니다.
이렇게 나오는데 해결 방법을 혹시 아실까요..?
test connection을 했을때
Invalid connection string format, a valid format is: "host:port:sid"
이렇게 뜨면 어떻게 해야하나요?