⛔ ORA-12514: listener does not currently know of service requested in connect descriptor
Error/Database

⛔ ORA-12514: listener does not currently know of service requested in connect descriptor

🟣 오류메세지

  • ORA-12514: listener does not currently know of service requested in connect descriptor

  • JUnit으로 DB Connection을 테스트하는 도중 에러가 발생했다.

에러내용

< 오류코드 >

  • 🗸 OracleConnectionTest.java

코드

  • 🗸 dataSource.xml

에러 해결 1

🟣 원인

✔️ 1. dataSource url의 SERVICE_NAME 불일치
✔️ 2. Oracle Database url 정보 오타
✔️ 3. logger 출력 포멧 실수

오라클의 SID, SERVICE_NAME은 대소문자를 반드시 구분하여 기술해야 한다.

🟣 해결책

✔️ 1. dataSource url의 SERVICE_NAME 불일치

  • 🗸 listener.ora 파일 확인

listener

  • 🗸 tnsnames.ora 파일 확인

tnsnames

  • 🗸 SqlDeveloper 확인

에러 해결 2

✔️ 2. Oracle Database url 정보 오타 (여기서 실수)

mysql의 url방식과 햇갈려서 맨뒤에 DB이름을 적어버리고 말았다

Oracle Database url 정보
driver = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:driver_type:[username/password]@[//]host_name[:port][/XE]

에러 해결 1

해결한 줄 알았는데 ??...

로그포멧 실수

con 객체가 안넘어온다. 뭐지..?
확인해보니

로그포멧 실수2

아주 멍청한 실수를 했다.

logger.info(String msg);
logger.info(String format, Object arg);

2번째 방법을 해주려면 포멧팅 {}을 써줘야한다는것을 잊었다.

해결

교훈 : 꺼진불도 다시보자