본문 바로가기
Computer Science/Database

Oracle | 오라클 클라우드 ATP Database 생성과 DBeaver로 연결하기

by YIAN 2022. 1. 21.

 

 

🦀 상황 (Context)

 

오라클 클라우드에서 ATP 데이터베이스를 생성했습니다. SQL Developer를 이용할 수도 있겠지만, 다양한 데이터베이스 툴로 사용하기 위해 DBeaver를 선택했습니다. M1 macOS Monterey에서 DBeaver로 연결하려고 합니다. DBeaver에서 [Test Connection] 버튼 클릭 시 다양한 에러가 발생했습니다.

 

IO Error: could not resolve the connect identifier "%s" IO Error: Got minus one from a read call
IO Error: Invalid connection string format, a valid format is: "host:port:sid" IO Error: Received fatal alert: handshake_failure, connect lapse 0 ms.

 

DBeaver와 Oracle의 사용법이나 방법을 잘 몰라서 많은 에러를 접했는데요, 여러분은 제가 설명하는 대로 따라 하시면 위 에러를 볼 일이 거의 없으실 것이라 사료됩니다. 본 글에서는 오라클 데이터베이스와 DBeaver를 연결하는 방법, New Connection을 추가하는 방법에 관해 설명합니다.

 

 

💊 원인 (Problem or Idea)

 

오라클에는 Wallet(전자지갑)의 개념이 존재합니다. Wallet을 이용해서 연결해주면 되는데요, 제가 몰라서 헤맸던 부분은 2가지였습니다.

 

  1. JDBC URL Template 입력하기
  2. OJDBC 드라이버 설정하기

 

특히, JDBC URL 입력 시 Wallet의 경로를 틀려서 원인을 못 찾고 많이 헤맸습니다. 하단의 내용에서는 오라클 ATP DB와 DBeaver를 한 번에 연결할 방법에 대해서 설명하겠습니다.

 

 

🎲 해결방안 (Solutions or Next step)

 

DBeaver 기준으로 오라클 데이터베이스를 연결하기 위해 필요한 것은 Wallet, OJDBC, ADMIN 계정의 비밀번호 이렇게 3가지입니다. 오라클 클라우드에 가입했다는 것과 DBeaver가 설치되었다는 가정하에 진행합니다. 참고로 오라클 클라우드에서 데이터베이스는 ATP와 ADW가 있는데요, 이 부분에 대해서는 다음에 다뤄보도록 하겠습니다. 우선, 설정 순서는 크게 본다면 다음과 같습니다.

 

  1. 오라클 클라우드에서 ATP 데이터베이스 생성하기
  2. 연결하려는 ATP 데이터베이스의 Wallet 다운로드하기
  3. 오라클 공식 홈페이지에서 OJDBC 다운로드하기
  4. DBeaver에서 OJDBC와 Wallet을 설정하여 오라클 데이터베이스 연결하기

 

하단의 내용에서 이미지와 함께 설명하겠습니다.

 

 

1. 오라클 클라우드에서 ATP 데이터베이스 생성하기

 

ATP 데이터베이스를 생성하기 위해서는, 우선 오라클 클라우드 계정이 필요합니다. 계정이 없다면 가입을 진행해 주세요. "Always free"라고 쓰여 있는 서비스 중 ATP가 보이실 텐데요, 클릭해서 생성하시면 됩니다.

 

 

[Create an ATP database]를 클릭해 주세요. ATP 데이터베이스를 생성하는 방법은 1분도 안 걸릴 것입니다. 하단의 이미지를 참고해서 빨간색 네모 칸 안의 값을 입력하거나 선택되었는지 확인해 주세요. 저의 설정이기 때문에 참고해 주세요.

 

  • Display Name: 명시할 데이터베이스 이름을 입력해 주세요.
  • Database name: 특수문자와 띄어쓰기 없이 데이터베이스 이름을 입력해 주세요.
  • Choose a workload type: CRUD를 위한 데이터베이스를 생성하려면, [Transaction Processing]을 선택해 주세요.
  • Choose a deployment type: 무료 버전에서는 [Shared Infrastructure]만 선택할 수 있습니다. 다른 선택을 하시려면 유료 버전을 사용해야 합니다.

 

  • Choose database version: 19c밖에 없습니다. 19c로 두시면 됩니다.
  • Password: 비밀번호 규칙에 맞게 입력해 주세요.
  • Confirm password: 비밀번호 규칙에 맞게 재입력해 주세요.

 

만들면서 알게 되었지만, 무료 버전으로는 20GB를 제공합니다.

 

  • Choose network access: 무료 버전은 [Secure access from everywhere]과 [Secure access from allowed IPs and VCNs only] 둘 중의 하나를 선택해야 합니다. 저는 전자를 선택했습니다.
  • Choose a license type: [License included]밖에 선택이 안 됩니다.
  • Contact Email: 알림을 받을 이메일을 선택해 주세요. 개발자용 이메일로 입력하시는 것을 추천해 드립니다. 무료 버전의 경우에는 일주일 동안 연결이 없으면 자동으로 종료되기 때문에 이에 대한 알람을 받을 수 있습니다.

 

[Create Autonomous Database] 버튼을 클릭하시면, 1~2분 정도 기다려주세요. PROVISIONING 상태에서 AVAILABLE로 바뀌면 사용 가능합니다.

 

AVAILABLE PROVISIONING TERMINATED 

 

궁금해서 실험해보았는데, 제가 확인했던 ATP 데이터베이스의 상태는 AVAILABLE, PROVISIONING, TERMINATED 이렇게 3가지였습니다. TERMINATED는 데이터베이스를 삭제하면 노출됩니다. 해당 데이터베이스가 AVAILABLE 상태인지 확인하면 좋을 것 같습니다.

 

 

2. 연결하려는 ATP 데이터베이스의 Wallet 다운로드하기

 

 

ATP 데이터베이스를 생성하신 직후라면 위 화면에서 바로 Wallet을 찾으시면 됩니다.

 

 

 


❗️ 참고

 

만약 로그아웃 후 다시 로그인할 때 어디에 있는 메뉴인지 찾으시려면 다음 화면을 참고하시면 됩니다.

 

 

오라클 클라우드 공식 사이트에서 맨 왼쪽 상단 햄버거 메뉴 클릭 후 [Database] > [Autonoumous Transaction Processing]을 클릭해 주세요.

 

 

그러면 여러분이 생성하신 Autonomous Databases 목록을 보실 수 있습니다. 빨간색 네모 칸 안에 있는, 하이퍼링크 처리된 여러분의 데이터베이스명을 클릭해 주세요.

 

 

위 화면에서 [DB Connection]을 클릭하시면 Wallet을 다운로드받을 수 있습니다.

 


 

 

다시 본론으로 돌아와서, 다음 화면부터 봐주시면 되겠습니다.

 

 

DBeaver가 아니더라도, 오라클 데이터베이스를 이용하기 위해서 Wallet을 다운로드해야 합니다. [DB Connection] > [Wallet type] > [Instance Wallet] > [Download wallet]을 클릭해 주세요.

 

 

Wallet의 비밀번호를 설정하는 창이 뜰 것입니다. 아무거나 입력할 수 있는 것은 아니니, Password와 Confirm Password에 같은 암호로, 암호 규칙에 맞게 입력해 주세요. [Download] 버튼을 클릭해서 다운로드받아줍니다. 

 

 

압축된 파일을 열어보시면 위처럼 되어있을 텐데요, 적절한 경로에 해당 폴더를 설정해주시면 됩니다. 해당 폴더를 DB 연결을 위한 경로로 사용해야 합니다. 주의해야 할 점은, 폴더명과 파일명에 공백이 존재하지 않도록 설정해 주세요. 영어와 아라비아 숫자(0-9), 특수문자 중 하이픈(-)이나 언더바(_)를 제외한 모든 문자 사용을 지양합니다.

 

TNS Name은 "데이터베이스명_TNS 단계" 형식으로 되어 있습니다. 만약, 데이터베이스명이 db라면 TNS Name은 다음과 같이 되어있을 것입니다. 이 내용을 모르더라도, Wallet에서 다운받았던 tnsnames.ora라는 파일을 vim으로 열어서 확인해보시면 각 속성값을 확인할 수 있습니다.

 

  • db_high
  • db_low
  • db_medium
  • db_tp
  • db_tpurgent

 

각 속성에 대한 자세한 내용은 이미지에 있는 Document 에서 확인 가능합니다.

 

 

3. 오라클 공식 홈페이지에서 OJDBC 다운로드하기

 

OJDBC를 다운로드하기 위해, 오라클 공식 홈페이지로 이동합니다.

 

https://www.oracle.com/database/technologies/appdev/jdbc-ucp-19c-downloads.html

 

 

우리가 생성했던 ATP 데이터베이스가 19c이므로, 같은 버전으로 다운로드해 주세요. 맨 위에 있는 ojdbc10-full.tar.gz 파일을 클릭해 주세요. OJDBC도 Wallet과 마찬가지로 압축파일 형식을 다운로드받습니다. 해당 폴더를 경로로 사용해야 하기 때문에, 폴더명과 파일명에 공백이 존재하면 안 됩니다. 영어와 아라비아 숫자(0-9), 특수문자 중 '-'나 '_'를 제외한 모든 문자 사용을 지양합니다.

 

 

폴더를 열어보시면 위와 같이 되어 있습니다. 위 폴더 역시 적당한 위치로 설정해 주세요.

 

 

4. DBeaver에서 OJDBC와 Wallet을 설정하여 오라클 데이터베이스 연결하기

 

 

모든 준비물을 갖추었다면, DBeaver 프로그램을 실행합니다. 왼쪽 상단 쪽에 위처럼 플러그인 모양이 있다면 클릭합니다.

 

 

[Oracle]을 선택한 뒤 [Next > ] 버튼을 클릭합니다. 그러면 다음과 같은 창으로 나타날 텐데요.

 

 

여기서 [Main] > [Custom]을 선택합니다.

 

[Main] > [Custom] 클릭 시 창 화면 빨간 네모는 채워야 할 부분들 표시

 

그러면 왼쪽과 같은 창을 보게 되실 텐데요, 데이터베이스 연결을 위해 필요한 정보들을 오른쪽 이미지처럼 빨간색 네모로 표시했습니다. 우선 JDBC URL Template은 다음과 같이 입력합니다.

 

 

저와 똑같이 할 필요는 없으니 참고해 주세요. 빨간색 네모 칸을 위주로 설명하겠습니다.

 

 

1) JDBC URL Template 입력

 

작성 방법

jdbc:oracle:thin:@[TNS name]?TNS_ADMIN=[Wallet 경로]
  • TNS name: 데이터베이스명_TNS name
    • 예시: 데이터베이스명이 db라면, "db_high"로 입력
  • Wallet 경로: /Users/사용자명/상세 경로
    • 예시: 사용자명이 "yian"이고, Wallet의 폴더명이 "Wallet"이라면, "/Users/yian/Wallet"으로 입력

 

작성 예시

jdbc:oracle:thin:@db_high?TNS_ADMIN=/Users/yian/Wallet

 

예시로 들면 위와 같은 형태로 입력해주시면 됩니다.

 

❗️ 참고

경로를 구분할 때는 macOS "/"로, Windows에서는 "\\"로 구분합니다.

 

2) Authentication 입력

  • Username: ADMIN
  • Password: Wallet을 다운로드받을 때 설정했던 비밀번호

기억이 가물가물하시겠지만, 처음 데이터베이스를 생성할 때 Username 은 "ADMIN"입니다.

 

3) OJDBC로 드라이버 설정

 

[Edit driver Settings] 버튼을 클릭하시고 [Libraries] 탭을 선택하면 다음과 같은 창이 나옵니다.

 

 

최초로 설정하는 경우에는 디폴트로 드라이버가 설정되어 있을 것입니다. 모두 선택해서 [Delete] 버튼을 클릭해서 삭제해 주세요.

 

 

[Add Folder] 클릭 후 OJDBC 경로를 찾아서 [Open] 버튼을 클릭해 주세요. 경로가 맞는지 확인한 뒤, [OK] 버튼을 클릭합니다. [Test Connection] 버튼을 클릭해서 연결을 확인합니다. 그러면 다음과 같이 창이 뜹니다.

 

 

이로써 연결이 완료되었습니다. [OK]를 누르고 [Finish] 버튼을 클릭해 주세요. 이제 연결된 데이터베이스를 볼 수 있고, ATP Database로 생성했기 때문에 다양한 스키마를 확인할 수 있습니다.

 

 

 

💣 회고 (Retrospective)

 

부끄럽지만 본 내용을 작성하기까지 매일 1시간씩 닷새 동안 헤맸습니다. [Test Connection]이 안 되었던 이유를 알고 나니 약간 허무해집니다. JDBC URL Template에서 /Users부터 작성하지 않았던 것과 OJDBC 드라이버 버전이 맞지 않았던 것이었습니다. 생각보다 자료도 잘 없고, 공식 문서를 봐도 이해가 안 되는 부분이 있을 수 있습니다. 저처럼 무한 삽질을 하는 분이 없도록 정리해보았습니다. 도움이 되셨으면 좋겠습니다.

 

해당 이슈를 해결할 수 있도록 도움을 주신 박찬오 님께 감사드립니다.

 

 

🍙 참고자료 (References)

 

 

댓글