너굴 개발 일지

[Oracle] 맥북 m1에서 오라클 사용하는 방법이 있다? 본문

DataBase

[Oracle] 맥북 m1에서 오라클 사용하는 방법이 있다?

너굴냥 2021. 9. 19. 19:11

맥북에어 m1을 장만하여 개발환경을 셋팅하던 중 오라클은 애플 자체 프로세서를 지원하지 않는다고 하여 멘붕이었습니다...

하지만 찾아보니 오라클을 사용할 수 있는 다른 방법은 있었습니다! 그래서 해당 포스팅에선 DB 생성, 접속 및 프로젝트에서 사용하는 방법까지 공유해보겠습니다.

 

오라클 DB를 생성하는 여러 가지 방법으로는

1. VM 인스턴스를 생성하여 리눅스 서버에 직접 오라클 DB를 설치

2. 오라클 클라우드에서 자율운영 트랜잭션 처리(ATP)를 생성

이 있었는데, 1,2번 둘다 해봤으나 2번 과정이 간단하여 2번 방법을 공유해보겠습니다!

 

참고로 ATP에 대해 간단히 설명드리면

- Autonomous Transaction Processing의 약어로 모든 표준 비즈니스 응용 프로그램을 지원, 확장 가능한 쿼리 성능을 제공

- 트랜잭션 처리 워크로드에 맞춰 조정되고 최적화된 환경에서 Oracle DB의 모든 성능 제공

- 서비스로서 데이터베이스 관리를 필요로 하지 않음

이러한 특징을 지니며 더 자세한 설명은 아래 링크를 참고해보시면 될 것 같습니다.

 

https://www.oracle.com/kr/autonomous-database/autonomous-transaction-processing/


 

[준비사항]

오라클 클라우드를 사용하기 전 회원가입은 필수입니다. 아래의 링크에서 회원가입을 진행하면 되는데 방법을 잘 모르겠다면 오라클 클라우드 회원가입 방법으로 검색해서 찾아보시면 자세한 글들이 많이 있으니 참고하시면 됩니다.

참고로 필자의 경우, 회원가입 후 승인 메일을 받는데 30분정도 걸렸던 것 같습니다.

https://cloud.oracle.com/

 

Oracle Cloud Infrastructure

 

cloud.oracle.com

 


 

[Database 생성]

[1. 오라클 클라우드 언어 설정]

오라클 클라우드에 접속하여 로그인을 한 후 혹시나 언어 설정이 안되어있다면 한국어로 변경합니다.

우측 상단 지구본 모양 > 한국어 설정

 

[2. ATP 데이터베이스 생성 시작]

오라클 클라우드 시작화면 중앙 >  리소스 실행의 구역에 있는 ATP 데이터베이스 생성 클릭

잘 모르겠다면 좌측 상단 목록 클릭 > atp 검색 > 자율운영 트랜잭션 처리(ATP) 클릭 

 

[3. 기본 정보 및 유형 선택]

기본 정보인 표시 이름, 데이터베이스 이름을 지정해주시면 됩니다.

표시 이름은 클라우드에서 식별하는 인스턴스명, 데이터베이스 이름은 접속을 위한 서비스명으로 생각하시면 됩니다.

 

 

[4. 배치 유형 및 데이터베이스 구성]

배치 유형은 공유 인프라 선택, 현재 계정은 프리 티어 등급을 사용하므로 데이터베이스 구성은 '항상 무료'를 체크합니다.

항상 무료(프리티어)는 OCPU 1개, 스토리지 20GB를 제공하고 있습니다. 참고로 데이터베이스 버전은 19c로 버전 변경이 불가합니다.

 

 

[5. 관리자 정보 및 네트워크 액세스 선택]

관리자의 비밀번호를 먼저 입력합니다. 관리자 이름은 ADMIN으로 수정이 불가합니다.

비밀번호는 12글자 이상으로, 대문자, 소문자, 숫자가 포함되어 있어야 합니다.

네트워크 액세스 선택은 '모든 곳에서 보안 액세스'로 고정되어 있습니다. 프리티어(항상 무료)에서는 선택이 불가합니다.

 

[6. 관리자 정보 및 네트워크 액세스 선택]

라이센스 유형 선택은 '라이센스 포함됨'을 선택 후 '자율운영 데이터베이스 생성' 버튼을 클릭하여 생성을 완료합니다.

 

만약 방금 가입하신 계정이라면 Operation failed because the OCI tenancy with OCID ~~~ is not in the Active state 

라는 에러를 만날 수도 있는데 그때는 몇분정보 기다렸다가 다시 시도해보시면 됩니다. Oracle이 계정을 셋팅하는데 시간이 조금 걸려 아직 미처 완료되지 않은 상태에서 시도했기 때문입니다.

 


 

[데이터베이스 접속]

생성된 데이터 베이스로 접속하기 위해선 전자지갑을 다운 받아서 접속할 수 있습니다.

 

[1. 전자 지갑 다운로드]

1) 방금 생성한 자율운영 데이터 베이스에 접속하여 인스턴스 정보에서 상단에 있는 'DB 접속' 클릭 

2) 전자 지갑 유형 - '인스턴스 전자 지갑' 선택 후 전자 지갑 다운로드 버튼 클릭

3) 전자 비밀번호 입력 후 하단의 다운로드 버튼을 클릭합니다.

    그러면 Wallet_~~ 이라는 이름의 zip 파일을 다운받게 됩니다. 이 파일로 DB에 접속해보겠습니다.

 

[2. SQL Developer를 통한 접속]

1. 미리 다운받은 SQL Developer를 실행하여 좌측 접속 상단의 초록색 + 버튼을 클릭하여 아래 사진과 같이 접속 유형을 '클라우드 전자 지갑'으로 선택합니다. 그 후 찾아보기 버튼을 클릭합니다.

2. 아까 다운로드 받은 압축된 전자지갑 파일을 선택 후 하단의 열기를 클릭합니다.

(제 이름이 포함되어 있어서 검정 박스로 가린 것이니 무시해도 됩니다.)

3. Name은 툴에서 식별 가능한 정보로 원하는 이름으로, Username은 admin, 비밀번호는 아까 생성할 때 입력한 비밀번호를 입력하고 테스트를 클릭하여 접속이 되는지 테스트를 해봅니다.

아래 사진과 같이 상태가 성공으로 뜬다면 접속이 원활히 된 것입니다. 그러면 접속을 클릭하여 접속하면 완료됩니다.

참고로 서비스, TNS 접속자를 선택할 수 있는데 포스팅에서는 high를 선택하였습니다.

이전에 다운로드 받은 전자지갑 zip 파일을 압축해제해보면 tnsnames.ora 라는 파일이 있는데 확인해보면 아래와같이 tns alias 정보 및 접속 프로토콜, 접속 주소 등이 설정된 내역을 보실 수 있습니다.

위에서 확인한 접속 스트링별로 DB에서 쿼리를 수행하는 동시성이나 성능 등이 달라지게 됩니다.

  • high : 최고의 성능, 가장 빠른 응답 속도로 수행되지만 실행할 수 있는 동시 SQL문 수가 단 3개 뿐입니다.
  • medium : high보다 많은 동시 SQL을 수행할 수 있지만 그 대신 high에 비해서는 낮은 수준의 성능을 제공합니다.
  • low : 가장 많은 동시 SQL을 지원하며 각 SQL 문마다 최소로 작은 수준의 리소스를 제공합니다.

더 자세한 사항은 아래 문서를 참고하시면 됩니다.

https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/manage-priorities.html#GUID-19175472-D200-445F-897A-F39801B0E953

 

Using Oracle Autonomous Database on Shared Exadata Infrastructure

Concurrency and prioritization of user requests in Autonomous Database is determined by the database service the user is connected with.

docs.oracle.com

 

 

4. 접속이 완료되었다면 아래와 같이 쿼리를 수행하여 정상적으로 조회 되는지 확인해봅니다.

아래 사진과 같이 결과가 잘 출력된다면 DB 접속 단계는 끝입니다.

 


[스프링 프로젝트에서 오라클 DB 접속]

현재 프로젝트의 개발 환경은 아래와 같습니다.

- 자바 1.8, 스프링 부트, Gradle, Spring-Data-JPA

 

[1. 의존성]

build.gradle에서 다음과 같이 설정합니다.

    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    

    // Oracle 지갑 관련
    implementation 'com.oracle.ojdbc:ucp'
    // https://mvnrepository.com/artifact/com.oracle.database.security/oraclepki
    implementation 'com.oracle.database.security:oraclepki'
    // https://mvnrepository.com/artifact/com.oracle.database.security/osdt_core
    implementation 'com.oracle.database.security:osdt_core'
    // https://mvnrepository.com/artifact/com.oracle.database.security/osdt_cert
    implementation 'com.oracle.database.security:osdt_cert'

자바 8버전일경우 ojdbc8을 사용하여 그렇지 않을 경우 아래 링크에서 jdk 별로 jdbc 버전을 확인하여 설정해주면 됩니다.

나머지 하단에 4개의 의존성은 오라클 DB에 TNS 및 jks 파일을 이용한 인증 접속시 사용되는 것인듯 합니다.

 

[2. application.properties]

spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@[TNSNAME]?TNS_ADMIN=[Wallet폴더 경로]
spring.datasource.username=admin
spring.datasource.password=[password]

tnsname에는 tnsnames.ora 파일에서 본인이 설정한 TNSNAME을 입력하면 됩니다.

Wallet 폴더 경로에는 폴더 경로를 잡으면 되는데 Wallet 폴더를 통째로 resources 폴더에 넣고 

TNS_ADMIN=./src/main/resources/Wallet 폴더명 이렇게 설정해주시면 됩니다.

resoures 폴더에 전자지갑을 위한 폴더를 생성하여 넣어도 무방합니다.

 

* 예시

 

이로써 맥북 m1에서 오라클 사용하는 법에 대해 포스팅해봤습니다.