Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

3. Oracle 클라우드, 자율운영 데이터베이스(오라클, ATP)와 스프링 프로젝트 연결하기 본문

개인 공부/(클라우드) Oracle Cloud

3. Oracle 클라우드, 자율운영 데이터베이스(오라클, ATP)와 스프링 프로젝트 연결하기

이대곤 2022. 10. 5. 16:38

1. 데이터베이스에 접속 가능한 IP 등록하기

* 아래의 사진은 아직 스프링 서버가 로컬에 있어 내 컴퓨터의 IP를 등록하는 방법을 보여주고 있지만,

   차후에 서버도 클라우드에 올라가면 그땐 내 컴퓨터의 IP가 아니라 서버의 IP를 등록해줘야 한다는 점을 알고 있어야합니다.

2. webapp\WEB-INF\spring\root-context.xml 에서 jdbc 설정 수정하기

<수정전>

<수정후>

[사용되는 접속 문자열 얻기]

로컬 DB 혹은 AWS RDS에서 사용하던 방식은

host : port : sid 순서로 값을 나열하는

EZConnect Format 방식이었는데

 

오라클 클라우드의 database에 연결할 때는

TNS URL Format 방식을 사용해야 합니다.

사용해야할 접속문자열은 아래를 참고하여 가져오면 됩니다.

 

먼저 DB접속을 클릭

접속 문자열에서

상호 TLS가 아닌 TLS를 선택

만약 그냥 TLS 를 선택할 수 없도록 잠겨있다면

이 라인의 왼쪽에 '더보기' 를 눌러

해당 부분에 체크되어 있는 부분을 해제해준 뒤 다시 시도하세요

 

또한, 1번 과정을 건너뛰고 이것을 시도하면

이와 관련한 편집 버튼이 활성화되지 않으니 주의하세요



TNS 이름에서 뒤에 medium이 붙은 곳의 같은 라인에서

'표시'를 눌러 펼친 뒤, 복사를 클릭

이제 이것을 root-context.xml의 해당 위치에 복붙 해줍니다.

복사 붙여넣기 해야 하는 위치는 맨 상단의 이미지를 참고하세요.

 

그리고 나서 username, password도

오라클 클라우드의 DB인스턴스를 생성할 당시 입력한 값으로 수정해줍니다.

3. 아래와 같은 에러가 발생한다면 사용중인 JDBC 버전 올리기(pom.xml 수정)

"org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory
 (IO 오류: Connection reset)"

 

이전에 사용하던 JDBC 버전은 ojdbc6 였는데

이 때문에 위 문구와 같은 오류가 발생했습니다.

 

이 문제는 pom.xml에서 jdbc 관련 dependency 를 수정하여

ojdbc6 -> ojdbc8버전으로 올려주었더니 해결되었습니다.

ojdbc8에서 세부 버전은 아무거나로 골라보았습니다.

 

참고로 "Cannot create PoolableConnectionFactory" 에러는

1번 과정에서 그냥 'TLS'가 아닌 '상호 TLS' 에서 얻은 정보를 사용해도 발생합니다.

단, 이때는  (IO 오류: ~~~~~) 에 나타나는 문구가 달랐던 걸로 기억합니다.

  

계속해서 설명을 이어가면

일단 기존에 사용하던 jdbc6 관련 dependency 를 주석처리 해주고

그 다음 아래의 dependency를 대신하여 사용합니다.

 

수정한 뒤에 저장하기를 눌러주면

관련 파일이 다운로드 되는 것을

오른쪽 하단에서 확인할 수 있습니다

 

다운로드 된 파일은

C:\Users\DG\.m2\repository\com\oracle 에서 확인할 수 있었습니다

 

<수정전>

<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc6</artifactId>
	<version>12.1.0.1</version>
</dependency>

<수정후>

<dependency>
	<groupId>com.oracle.database.jdbc</groupId>
	<artifactId>ojdbc8</artifactId>
	<version>21.7.0.0</version>
</dependency>

바로 위의 dependency 코드는

메이븐 저장소에서 ojdbc8 을 검색하여 가져온 것이니 참고하세요

https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8

 

그 다음 repositories 태그가 어디에도 없다면 이것도 추가해줍니다.

저는 기존에 존재하던 프로젝트를 복사해서 사용하여

이부분은 이미 존재했기 때문에 생략했습니다.

<repositories>
	<repository>
		<id>oracle</id>
		<name>ORACLE JDBC Repository</name>
		<url>http://maven.jahia.org/maven2</url>
	</repository>
</repositories>

3. 이제 필요한 모든 과정을 마쳤고 실행이 정상적으로 되는지 확인합니다.

Comments