Oracle 19c with Ojdbc8.jar

Nochi·2021년 7월 3일
0

사건 사고들

목록 보기
1/4
post-thumbnail

글쓴이가 회사에서 Web Module 제작했던 것을 각 나라별로 수정해서 배포를 하는 과정 중에 개인적으로 힘들었던 사건을 다룬 이야기로 매우 주관적임을 밝힙니다.

1. 사건의 발단

회사에서 쓰는 웹 모듈의 백엔드 환경은 대략 jdk1.8_202, spring boot/Maven, oracle 11g … 로 이루어져 있다. 그 프로그램들을 이용하여 해외의 환경에 맞게끔 수정하여 배포를 하는 것을 기본으로 한다.

이미 내가 만든 모듈이어서 국내에 2곳에서 아무 무리없이 사용하고 있었던 모듈이었다. 이미 사용하고 있던 모듈이어서 큰 걱정없이 배포를 하였다.

문제는 해당 배포하는 곳에 환경의 스펙에 대해서 들은 것이 없었다. 그리하여 배포 환경에서 배치파일을 만드는 차장님께 해당 모듈이 동작하지 않는다고 연락이 왔다.

문제 해결 방안

1. Spring Security 확인

처음에 해당 에러에 대해서 알아봐야 하지만, 원격 접속 권한부터 에러까지 알 수 없었기에 차장님께 Spring Security 에 필요한 DB 테이블 및 쿼리를 넘겨 드렸다.

전혀 다른 문제였기 때문에, 같은 에러가 발생하였고, 원격 접속 권한을 받았다.

2. 원격 접속을 통한 에러 확인

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

SID와 Service Name에 대해서 잘 몰랐기에 항상 SID를 사용하여서 Service Name에 대해서 잘 알지 못했기 때문인 것 같았다.

SERVICE NAME으로 지정하는 경우

"/"로 설정
Ex) jdbc:oracle:thin:@127.0.0.1:1521/ORCL

SID로 지정하는 경우

":"로 설정
Ex) jdbc:oracle:thin:@127.0.0.1:1521:ORCL

해당 설정을 올바르게 수정한 뒤, 새로운 에러를 마주하게 되었다.

3. 프로토콜 에러 확인

ORA-28040 : No matching authentication protocol

해당 오류는 OJDBC 버전이 맞지 않기 때문에 생기는 에러라고 하였다.
그리하여, Oracle의 버전과 만든 모듈이 가진 OJDBC를 확인하였다.

  • Spring Boot OJDBC Version : ojdbc7.jar
  • Env. Oracle Version : Oracle 19c

ojdbc7.jar에서는 Oracle 19c를 지원하지 않는다. 그리고 사용하고 있는 자바 버전은 1.8이었기에 ojdbc8.jar 까지 사용 가능하였고, 19c를 지원한다고 하여서 다운받았다. 그리고 Maven을 사용하니, ojdbc7.jar을 제거하고 ojdbc8.jar을 소스에 기재하였다.

그리고 실행해보니 .m2 폴더에 기타 jar 파일이 부족하다고 하여 에러 내용대로 jar 파일을 ojdbc8.jar 파일을 받던 Oracle 홈페이지에서 필요한 jar 파일을 다운받아 폴더에 추가하였다.

해당 프로젝트에서 Java Resource/Libraries 안에 있는 ojdbc7.jar이 없는데도 배포된 곳에는 실행이 되지 않았다. 문제를 살펴보기 시작했다.

4. 아직도 포함되어 있는 ojdbc7.jar 발견

Maven으로 빌드 시, 빌드할 때, 사용하는 target 폴더가 있다.
해당 폴더에 대해 사람들에게 물어보면 “빌드할 때 쓰는건데 신경 쓰지 않으셔도 돼요.”라고 하였다.

아직도 그 모습을 잊지 못한다. target의 폴더 안에 lib 폴더에 ojdbc7.jar이 살아서 배포 시에 포함되고 있었던 것을 아직도 잊지 못한다.

해당 ojdbc7.jar을 삭제한 뒤에 3일 간의 배포 문제는 끝나게 되었다.

마치며..

당시, 참 난감했던 일이었다. 역시 모든 환경에서 실행하도록 만드는게 쉽진 않은 것 같다. 오늘 그래도 Oracle19c에서도 동작할 수 있는 방법을 배운 것 같아서 좋은 시간이었다.

0개의 댓글