ORA-28040: No matching authentication protocol 에러 조치 방법
1) 에러현상
로컬에서 접속한 웹페이지가 갑자기 아래와 같이 No matching authentication protocol 에러 가 발생하면서 접속이 되지 않았습니다.

Java 기반으로 된 웹페이지인데, 에러 내용을 확인한 후 먼저 JDBC 설정이 잘못된 것으로 추측하여 JDBC 설정을 확인해 보았습니다.
그러나 JDK는 잘 설정되어 있었고, 환경 변수도 올바르게 설정되어 있었습니다.
다음으로 의심되는 부분은 톰캣(Tomcat) 구동 시 접속하는 데이터베이스의 접속 정보가 잘못된 것은 아닐까?
접속 IP와 계정, 패스워드, SID 등을 확인하였으나, 변경된 부분이 없었고 설정도 잘 되어 있었습니다.
그렇다면 왜 이런 에러가 발생한 것일까요?
2) 해결방법)
문제의 정확한 원인은 ojdbc 버전의 문제였습니다. 기존 소스를 전체 업데이트하면서 서버에 있는 ojdbc14.jar 파일이 내 라이브러리 폴더에 업데이트되었고, 이로 인해 ojdbc.jar 파일이 두 개가 존재하게 되었습니다. 기존에 있던 버전은 ojdbc8.jar 파일이었습니다.
두 개의 ojdbc 파일이 있는 경우, 톰캣 구동 시 어느 쪽을 참조하여 실행되는지는 정확히 알 수 없으나, 일반적으로 버전에 맞지 않는 ojdbc에 참조되어 오류가 발생할 수 있습니다. (랜덤이라고 하지만, 정확한 로직은 불분명합니다.)
이 문제를 해결하기 위해 ojdbc14.jar 파일을 삭제한 후 톰캣을 재기동하니 정상적으로 실행되어 문제가 해결되었습니다!
추가 조치 사항 및 권장 사항
- 의심되는 부분 점검: 데이터베이스 접속 정보(IP, 계정, 패스워드, SID 등)가 변경되었는지 확인합니다. 설정 파일이나 환경 변수를 꼼꼼히 점검합니다.
- 라이브러리 버전 관리: 프로젝트에서 사용하는 모든 라이브러리의 버전을 명확히 관리합니다. 특히, 데이터베이스 드라이버와 같은 중요한 라이브러리는 명확한 버전 관리가 필요합니다.
- 서버 환경 점검: 서버에 배포된 파일들과 로컬 환경의 파일들이 일치하는지 확인합니다. 특히, 배포 과정에서 불필요한 파일이 포함되지 않도록 주의합니다.
- 도움말 및 문서 확인: 동일한 문제가 발생했을 때, 구글이나 공식 문서에서 유사한 사례를 찾아보는 것도 좋은 방법입니다.
같은 오류를 겪고 계신 분들은 DB 접속 정보를 먼저 확인한 후, 이상이 없다면 ojdbc 버전도 확인해보시기 바랍니다. 구글에도 이런 내용이 많지 않아 찾는 데 애를 먹었기 때문에 기록을 남깁니다.
결론
이번 문제는 ojdbc 버전 불일치로 인해 발생한 에러였습니다. 이를 해결하기 위해 정확한 버전을 확인하고, 불필요한 파일을 삭제하여 정상적인 실행을 이끌어냈습니다. 같은 문제를 겪는 개발자들에게 도움이 되길 바랍니다.
궁금하신 점이 있다면 댓글로 남겨주세요. 읽어주셔서 감사합니다.